【发布时间】:2012-07-16 20:47:50
【问题描述】:
我正在开发一个供测试人员使用的简单界面,我将其编写为 HTML 页面。我需要做的是在用户按下按钮时打开一个特定的 URL(该 URL 会触发另一台服务器上的 Hudson/Jenkins 作业)。这是我用来完成此操作的代码:
function triggerJob() {
var url = "...";
var trigger = window.open(url);
setTimeout(function() {trigger.close();}, 1000);
}
几点说明:
- 我知道这是完成我想做的事情的糟糕方式。我已经使用 jQuery 实现了该解决方案,并且由于某种原因,在以这种方式查询 URL 时,Hudson 服务器上的工作没有启动。奇怪的是,当我在同一台机器上使用 Ruby 脚本查询它时,它工作得很好。
- 我必须设置超时,因为如果我只是打开窗口然后立即关闭它,浏览器会执行应有的操作,但是 Hudson 服务器注册它并开始工作太快了。
- 我尝试将除
trigger.close();之外的其他语句放入匿名函数中,它们也没有被执行。毫无疑问,setTimeout 没有执行它应该执行的块。
感谢您能给我的任何帮助。我已经玩了好几个小时了,无法弄清楚为什么我的代码没有正确执行超时。
【问题讨论】:
-
它似乎对我有用,你测试的是什么浏览器?
-
我使用的是 Chrome ......这不是重复的,因为我根本没有使用 jQuery,只是使用原生 JavaScript 函数。
-
另外,triggerJob() 函数由按钮的 onClick 属性启动,如果这很重要的话。
-
尝试使用
window.setTimeout以确保上下文正确。其他可能的原因是setTimeout方法已在您不知情的情况下被覆盖。
标签: javascript settimeout