0

我正在开发一个供测试人员使用的简单界面,我将其编写为 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 没有执行它应该执行的块。

谢谢你能给我的任何帮助。我已经玩了几个小时了,无法弄清楚为什么我的代码没有正确执行超时。

4

1 回答 1

1

在做其他事情的过程中发现了这个问题,所以我想我会分享解决方案,以防其他人遇到同样的问题。问题是我正在使用onClick表单中提交按钮的属性调用此函数。当表单提交时,它调用函数,然后在函数执行后立即重新加载页面,这取消了triggerJob函数中设置的超时。setTimeout如果您想以这种方式使用,您必须使用链接、单选按钮等。感谢所有试图帮助我的人。

德鲁

于 2012-07-20T14:33:28.543 回答