![](/img/trans.png)
[英]how to run greasemonkey script before the page content is displayed?
[英]How does one have Greasemonkey run before *anything* else in the page?
是否可以在頁面上的任何其他內容之前運行 Greasemonkey 腳本?
我知道@run-at document-start
,但這似乎在<HTML>
標記之后立即運行。 通常這不是問題,但如果頁面格式錯誤,如下例所示,我似乎無能為力。
我會很感激任何建議或想法。 謝謝!
<script>alert('This is an annoying message.');</script>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
...etc...
實際上, @run-at document-start
確實會在頁面中的任何內容之前運行 GM 腳本。
在您的情況下,以下代碼將與@run-at document-start
一起使用:
_oldAlert = alert;
unsafeWindow.alert = function () {};
/*-- Optionally, wait for the DOM, then set an onload handler to restore
alert().
*/
這是不可能的,因為 HTML 要求腳本在解析期間執行或根本不執行,例如這是允許的:
<script> document.write('<!'+'--'); </script>
如果瀏覽器不執行它就通過了這個腳本,它將看到完全不同的文檔,因此您無法在腳本運行之前分析 HTML 文檔的 DOM。
Opera 通過觸發BeforeScript
事件在UserJS中解決了這個問題,允許 UserJS 在最后一刻更改/刪除腳本。
你有沒有嘗試過:
(function() {
var yourFunction = function()
{
// ...
}
window.addEventListener("load", yourFunction, false);
})();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.