![](/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.