2013-02-12 29 views
0

我需要點擊一個窗口確認框中的「確定」,這個確認框將可預見地出現在我的用戶腳本執行的某個點上。通常當我需要這樣做時,我只是在執行的觀察者處查看源代碼,窗口確認:如何確認一個window.confirm與JavaScript?

例如,

...onclick="DoWathever()"> 

然後我會調用本機DoWathever()並繞過確認窗口。問題是,在調用window.confirm的毯子下面的函數中,所以我不能繞過這個簡單的方法。

話雖這麼說,我已經看着計算器和谷歌可能的解決方案,並發現一個:Clicking 'OK' on alert or confirm dialog through jquery/javascript?

這基本上意味着我通過創建一個「假」 window.confirm覆蓋默認確認,使用:

window.alert = function() { 
    console.log.apply(console, arguments); 
    return true; 
}; 

現在這時候會很奇怪,我不得不使用此解決方案2種經驗:

1)如果我只是在控制檯上手動聲明它(我通常做的測試之前,實際將它包含在腳本中),它將完美工作並確認對話框。 2)如果我將它包含在腳本中(在其他任何事情之前,請介意),它將無法正常工作,JavaScript會一如既往地向我詢問確認窗口。

所以...是的,任何想法爲什麼它不能在2)或任何可能的替代解決方案嗎?

謝謝。

+0

我想這是由於您的擴展的沙箱。你沒有綁定到1)和2)中相同的''window''函數。如果你想綁定到頁面上下文中的''window''函數,你將不得不[將腳本注入頁面](http://voodooattack.blogspot.com/2010/01/writing-google - 鉻 - 擴展 - 如何-to.html)。 – BeRecursive 2013-02-12 12:50:38

回答

0

在userscripts,window並非指同一件事的頁面級window指,所以你需要這樣做:

unsafeWindow.alert = function() { 
    console.log.apply(console, arguments); 
    return true; 
}; 

閱讀危險的unsafeWindow你這樣做雖然之前。