2012-07-16 78 views
0

我正在爲測試人員使用一個簡單的界面,我正在編寫一個HTML頁面。我需要做的是當用戶按下按鈕時打開一個特定的URL(URL觸發另一臺服務器上的Hudson/Jenkins作業)。下面是我使用來完成這個代碼:setTimeout不執行傳遞函數

function triggerJob() { 
    var url = "..."; 
    var trigger = window.open(url); 
    setTimeout(function() {trigger.close();}, 1000); 
} 

有兩點要注意:

  • 我這知道完成的事情我想要做的好方法。我已經使用jQuery實現瞭解決方案,出於某種原因,以這種方式查詢URL時,Hudson服務器上的作業不會被啓動。奇怪的是,當我使用同一臺機器上的Ruby腳本查詢它時,它工作得很好。
  • 我必須做超時,因爲如果我只是打開窗口,然後立即關閉它,瀏覽器會做它應該做的事情,但是對於Hudson服務器來說,註冊並啓動作業太快了。
  • 我曾嘗試在除了trigger.close();之外的其他語句內匿名函數,並且它們也不被執行。毫無疑問,setTimeout沒有執行它應該是的塊。

謝謝你的任何幫助,你可能會給我。我一直在這玩弄了幾個小時,無法弄清楚爲什麼我的代碼沒有正確執行超時。

+1

這似乎適用於我,你測試什麼瀏覽器? – Headshota 2012-07-16 20:52:39

+1

重複? http://stackoverflow.com/questions/5149552/jquery-not-closing-window – turtlepick 2012-07-16 20:53:00

+0

我使用Chrome瀏覽器。這不是重複的,因爲我甚至沒有使用jQuery,只是原生JavaScript函數。 – 2012-07-16 20:59:21

回答

1

在做其他事情的過程中發現了這個問題,所以我想我會分享解決方案,以防其他人遇到同樣的問題。問題在於我使用表單中的提交按鈕的onClick屬性調用此函數。當提交表單時,它會調用該函數,然後在函數執行後立即重新載入頁面,取消在triggerJob函數中設置的超時。如果您想以這種方式使用setTimeout,您必須使用鏈接,單選按鈕等。感謝所有試圖幫助我的人。

Drew

相關問題