小编Jon*_*nah的帖子

innerHTML不可信:不总是同步执行

要查看操作中的问题,请参阅此jsbin.单击按钮会触发buttonHandler(),如下所示:

function buttonHandler() {
  var elm = document.getElementById("progress");
  elm.innerHTML = "thinking";
  longPrimeCalc();
}
Run Code Online (Sandbox Code Playgroud)

您可能希望此代码将div的文本更改为"思考",然后运行longPrimeCalc()一个需要几秒钟才能完成的算术函数.然而,这不是发生的事情.相反,"longPrimeCalc"首先完成,然后文本在运行完毕后更新为"思考",就好像两行代码的顺序相反.

看起来浏览器不会同步运行"innerHTML"代码,而是为它创建一个自己休闲执行的新线程.

我的问题:

  1. 导致这种行为的根本原因是什么?
  2. 如何让浏览器按照我期望的方式运行,即强制它在执行" longPrimeCalc()" 之前更新"innerHTML "?

我在最新版本的chrome中测试了这个.

javascript

14
推荐指数
2
解决办法
1604
查看次数

在没有"脚本"条目的情况下实现"npm run x"行为?

要在已安装的"上下文"中运行节点命令node_modules,可以在scripts字段中输入package.json.例如:

...
  "scripts": {
    "test": "mocha --recursive test/**/*.js --compilers js:babel-register"
  }
...
Run Code Online (Sandbox Code Playgroud)

然后我可以输入npm run test我的项目根目录,然后运行mocha测试(通过调用安装的mocha二进制文件node_modules/mocha/bin).

有没有办法实现完全相同的行为,但没有创建脚本条目?例如,对于一次性"脚本"?

我想象的东西如下,相当于npm run test:

npm cmd mocha --recursive test/**/*.js --compilers js:babel-register
Run Code Online (Sandbox Code Playgroud)

有没有办法实现这个目标?

注意:我应该澄清我正在寻找真正的等价.也就是说,我的命令应该能够访问其他脚本命令等.我知道你总是可以使用node和node_modules中二进制文件的路径调用二进制文件,但这不是一个合适的解决方案.

javascript command-line-interface node.js npm

13
推荐指数
1
解决办法
1905
查看次数

Google Maps API - 在域上禁用

页面加载时,我收到消息为javascript警告: Google has disabled use of the Maps API for this application. See the Terms of Service for more information: http://www.google.com/intl/en-US_US/help/terms_maps.html.

一切正常,直到今天.Google网站管理员工具没有告诉我任何事情.

我的问题是,我可以找到更多的信息,为什么这个页面被禁止/阻止.(有很多可能的原因)

怎么做才能解锁?谁或何地发送请求?

google-maps google-maps-api-3

12
推荐指数
1
解决办法
7926
查看次数

创建作为我们移动网站快捷方式的Android应用程序

我们有一个特殊的移动版本的网站,我们想在Android市场推广."app"实际上是网站的快捷方式,但您可以下载它并拥有一个图标,就像任何其他应用程序一样.

这可能吗?如果是这样,你可以链接我的指示吗?我无法找到任何搜索谷歌的信息.

谢谢,约拿

android

11
推荐指数
1
解决办法
1万
查看次数

究竟反斜杠在反引号内如何工作?

Bash常见问题解答

反引号内的反斜杠(\)以非显而易见的方式处理:

 $ echo "`echo \\a`" "$(echo \\a)"
 a \a
 $ echo "`echo \\\\a`" "$(echo \\\\a)"
 \a \\a
Run Code Online (Sandbox Code Playgroud)

但是,FAQ并未分解导致这种差异的解析规则。man bash我发现的唯一相关报价是:

当使用旧式的反引号形式的替换时,反斜杠保留其字面意思,除非后面是$,`或。

The "$(echo \\a)" and "$(echo \\\\a)" cases are easy enough: Backslash, the escape character, is escaping itself into a literal backlash. Thus every instance of \\ becomes \ in the output. But I'm struggling to understand the analogous logic for the backtick cases. What is the underlying rule and how does the observed output follow …

bash escaping backslash backticks

11
推荐指数
1
解决办法
313
查看次数

即使使用Spork,Rspec在Windows上仍然很慢

我已经按照本教程关于使用spork加速rspec,而且我使用的是带有ruby 1.9.2和rails 3.2.5的win7 x64盒子.一切正常,但测试仍然执行缓慢.spork是否因为操作系统不支持分叉而在Windows上做不了多少?

我还能做些什么来加快速度吗?

我也发现了类似的问题,并观看了Corey Haines关于快速测试视频.我很喜欢这个视频,但是当我们的工具状态(由于rails启动时间导致测试速度慢,在这种情况下)决定了我们如何构建代码时,我不禁感到某些东西已经关闭.如果那个缓慢的启动时间不存在,他的方法是否需要?另一方面,测试需要10-30秒才能运行,因此TDD的许多好处都会丢失,我也会看到他的观点.

如果它是相关的,这里是spork的控制台输出,因为rspec被执行了几次:

    $ bundle exec spork
Using RSpec
  -- Starting to fill pool...
     Wait until at least one slave is provided before running tests...
  ** CTRL+BREAK to stop Spork and kill all ruby slave processes **
Spork is ready and listening on 8989!
  -- Rinda Ring Server listening for connections...

   -- build slave 1...
Preloading Rails environment
   -- build slave 2...
Preloading Rails environment
Loading Spork.prefork …
Run Code Online (Sandbox Code Playgroud)

rspec ruby-on-rails spork

10
推荐指数
1
解决办法
1361
查看次数

为什么d3的select()和selectAll()在这里表现不同?

我正在玩拖动倍数的例子,我注意到了一些我无法解释的事情.

在这个片段中:

var svg = d3.select("body").selectAll("svg")
    .data(d3.range(16).map(function() { return {x: width / 2, y: height / 2}; }))
    .enter().append("svg")
    .attr("width", width)
    .attr("height", height);
Run Code Online (Sandbox Code Playgroud)

我换selectAllselect.它仍然有效,但现在的svg元素将被添加</body>标签.原始代码,如您所期望的那样selectAll,将它们添加到<body>标记之后.

由于原来的HTML不包含硬编码的<svg>元素,我认为无论是selectselectAll刚刚返回空选择.所以我无法弄清楚为什么它们导致不同的行为.

我只是在寻找解释.谢谢!

javascript d3.js

10
推荐指数
2
解决办法
1万
查看次数

使用bsearch查找用于将新元素插入到排序数组中的索引

我有一个排序的唯一数组,并希望有效地插入一个不在数组中的元素,如下所示:

a = [1,2,4,5,6]
new_elm = 3
insert_at = a.bsearch_index {|x| x > new_elm } # => 2
a.insert(insert_at, new_elm) # now a = [1,2,3,4,5,6]
Run Code Online (Sandbox Code Playgroud)

该方法bsearch_index不存在:only bsearch,返回匹配元素而不是匹配元素的索引.有没有内置的方法来实现这一目标?

ruby bsearch

10
推荐指数
4
解决办法
4317
查看次数

阅读400响应的主体?

我试图用rest-client宝石阅读400响应的主体.问题是rest-client通过将它作为一个错误来回应400,所以我无法找出任何方法来获取正文.

这是激励性的例子.考虑这个对facebook图API的调用:

JSON.parse(RestClient.get("https://graph.facebook.com/me?fields=id,email,first_name,last_name&access_token=#{access_token}"))
Run Code Online (Sandbox Code Playgroud)

如果access_token过期或无效,Facebook会做两件事:

  1. 返回400 Bad Request HTTP响应
  2. 返回响应正文中的JSON,其中包含更多信息,如下所示:
{
   "error": {
      "message": "The access token could not be decrypted",
      "type": "OAuthException",
      "code": 190
   }
}
Run Code Online (Sandbox Code Playgroud)

因为400响应引发了错误,我无法弄清楚如何获得响应的主体.也就是说,例如,如果我在curl或浏览器中运行上面的GET请求,我可以看到正文,但我无法弄清楚如何在restclient中访问它.这是一个例子:

begin
  fb_response = JSON.parse(RestClient.get("https://graph.facebook.com/me?fields=id,email,first_name,last_name&access_token=#{access_token}"))
rescue => e
  # 400 response puts me here
  # How can I get the body of the above response now, so I can get details on the error?
  # eg, was it an expired token?  A malformed token?  Something else?
end
Run Code Online (Sandbox Code Playgroud)

ruby rest-client

10
推荐指数
1
解决办法
5788
查看次数

使用SVN与暂存和实时网站

我目前在托管的Web服务器上有一个svn存储库.我在本地工作,将我的更改提交到我的服务器上的存储库,然后当我准备推送更改时,通过我的实时文件夹中的ssh运行"svn update".

我现在正在添加一个暂存站点,它将驻留在同一台服务器上.它只是同一台服务器上的另一个文件夹.

问题是我将在登台服务器上对网站进行稍微更大的更改,这可能需要长达一周的测试时间.在此期间,我可能希望对不需要测试的实时网站进行小的修饰.我们来举个例子:

  1. 假设我的本地,登台和现场网站都从修订版1开始.
  2. 我在本地进行重大更改,提交它们,并更新我的登台服务器.本地和分期是修订版2,实时仍然是1.
  3. 有人要求在网站上进行简单的文字更改.
  4. 啊.现在我必须将本地副本还原为修订版1,进行小改动并提交.现在我更新到实时站点到版本3,它有一个小的变化.
  5. 我想继续处理我的主要更改,因此我将本地副本更新回修订版2,并继续工作.
  6. 等等....

这迫使我跟踪转速并不断更新和恢复.有没有更好的办法?我觉得我应该在这里使用分支和标签,但我不明白究竟是怎么回事.

谢谢,约拿

svn

9
推荐指数
1
解决办法
5010
查看次数