5

是否可以在页面上的任何其他内容之前运行 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...
4

3 回答 3

4

实际上,在页面中的任何内容@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().
*/
于 2012-01-22T11:18:01.383 回答
2

这是不可能的,因为 HTML 要求脚本在解析期间执行或根本不执行,例如,这是允许的:

<script> document.write('<!'+'--'); </script>

如果浏览器不执行它就通过了这个脚本,它会看到完全不同的文档,因此你不能在脚本运行之前分析 HTML 文档的 DOM。

Opera通过触发事件在UserJS中解决了这个问题BeforeScript,允许 UserJS 在最后一刻更改/删除脚本。

于 2009-04-04T18:06:22.173 回答
-1

你有没有尝试过:

(function() {
    var yourFunction = function() 
    {
       // ...
    }
    window.addEventListener("load", yourFunction, false);
})();
于 2009-04-02T03:25:14.357 回答