2010-07-27 61 views
3

我想寫一個非常簡單的greasemonkey腳本,因爲我討厭「你確定嗎?」在我使用了很多網站的javascript確認。我只是將它用於個人使用,不會發布它或任何東西。在Google搜索後,我發現http://wiki.greasespot.net/UnsafeWindow解釋了我想要做的事情。如何編寫一個greasemonkey腳本來刪除一個confim對話框?

因爲我想要的網頁的源代碼是這樣的

var message = "Are you sure?"; 
function confirmIt(message) { 
    var result = confirm(message); 
    return result; 
} 

我想只是返回true更換confirmIt(消息);

所以我做了一個腳本

var oldFunction = unsafeWindow.confirmIt(message); 
    unsafeWindow.confirmIt(message) = function() { 
    return true; 
}; 

我得到的錯誤「沒有定義的消息。」

我不知道我是否正在討論這個權利(我不這麼認爲),但是我希望得到一些在Greasemonkey方面有更多經驗的人的指導,關於如何替換頁面上的Javascript函數。

+1

如果你發佈網頁,我可能會告訴你。它可能是你看到的彈出窗口只是一個覆蓋div - 每次使用greasymonkey加載頁面時都隱藏div,並且你的工作更容易 – jakeisonline 2010-07-27 02:20:43

回答

4

您需要將unsafeWindow.confirmIt作爲一個變量,除了函數(它是)之外。因此,在您的代碼中執行所嘗試的方法是:

var oldFunction = unsafeWindow.confirmIt; 

unsafeWindow.confirmIt = function(message) { 
    return true; 
}; 

試試這個。

+0

工作!謝謝。奇怪的是,我不在乎在我的函數中訪問變量消息,但是如果我確實想要,如果我似乎無法訪問參數,我該怎麼做呢? – 2010-07-27 02:41:17

+1

您可以訪問參數。你的功能被定義爲採用一個它稱爲「消息」的參數。你可以說 unsafeWindow.confirmIt = function(message){alert(message);返回true;}; ,它的工作原理與您預期的完全相同。 – Hellion 2010-07-27 06:50:09

相關問題