是否可以在页面上的任何之前运行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...
答案 0 :(得分:3)
实际上,@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().
*/
答案 1 :(得分:2)
这是不可能的,因为HTML要求在解析期间执行脚本或根本不执行脚本,例如这是允许的:
<script> document.write('<!'+'--'); </script>
如果浏览器超过此脚本而不执行它,它将看到完全不同的文档,因此在脚本运行之前无法分析HTML文档的DOM。
Opera通过触发BeforeScript
事件在UserJS中解决了这个问题,允许UserJS在最后一刻更改/删除脚本。
答案 2 :(得分:-1)
你试过了吗?
(function() {
var yourFunction = function()
{
// ...
}
window.addEventListener("load", yourFunction, false);
})();