如何让 Greasemonkey 在页面中的“任何内容”之前运行?

ans*_*ung 5 javascript greasemonkey

是否可以让 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 Code Online (Sandbox Code Playgroud)

Kor*_*nel 2

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

<script> document.write('<!'+'--'); </script>
Run Code Online (Sandbox Code Playgroud)

如果浏览器跳过这个脚本而不执行它,它将看到完全不同的文档,因此你无法在脚本运行之前分析 HTML 文档的 DOM。

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