Javascript 如何使用用户脚本覆盖警报功能?
在站点上有这样的代码(其站点位于LAN上) 但是我看到了警报并得到了这个错误Javascript 如何使用用户脚本覆盖警报功能?,javascript,alert,greasemonkey,userscripts,tampermonkey,Javascript,Alert,Greasemonkey,Userscripts,Tampermonkey,在站点上有这样的代码(其站点位于LAN上) 但是我看到了警报并得到了这个错误 Error: uncaught exception: [Exception... "Component is not available" nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)" location: "JS frame :: file:///C:/Documents%20and%20Settings/arokitnicki/Dane%20aplikacji/M
Error: uncaught exception: [Exception... "Component is not available" nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)" location: "JS frame :: file:///C:/Documents%20and%20Settings/arokitnicki/Dane%20aplikacji/Mozilla/Firefox/Profiles/sm4bsods.default/extensions/%7Be4a8a97b-f2ed-450b-b12d-ee082ba24781%7D/components/greasemonkey.js :: anonymous :: line 377" data: no]
如何禁用该警报
另外,这不是一个javascript问题,而是一个油腻的问题
编辑:
它公司的网站,所以我不能粘贴真正的代码
<head>
<script>
dojo.require("dojo.back");
dojo.back.init();
</script>
</head>
<body onload="someMethod()">
<iframe></iframe>
<script>
alert("bla");
</script>
</body>
dojo.require(“dojo.back”);
dojo.back.init();
警报(“bla”);
标题中还有一些脚本和CSS声明。更新:对于Tampermonkey、Violentmonkey、Greasemonkey的现代版本(但强烈建议避免使用GM 4+):
在大多数情况下,您可以使用
@run-at-document start
截获alert()
。例如,加载此脚本,然后访问:
请注意,如果您正在运行Tampermonkey,您可以切换到
注入模式:即时:
Tampermonkey设置=>配置模式:高级
=>实验=>注入模式:即时
如果脚本需要GM_uuu函数,则必须将@grant
设置为“无”。在这种情况下,请像这样使用exportFunction()
:
// ==UserScript==
// @name _Overwrite Alert
// @match *://output.jsbin.com/*
// @grant GM_addStyle
// @run-at document-start
// ==/UserScript==
function myAlert (str) {
console.log ("Greasemonkey intercepted alert: ", str);
}
unsafeWindow.alert = exportFunction (myAlert, unsafeWindow);
对于2011年8月之前的Greasemonkey,旧答案是:
unsafeWindow.alert=function(){}代码>在选定的情况下工作正常
但是,如果这确实是页面上的代码,那么您将无法使用Greasemonkey停止该警报
这是因为该警报将在页面加载期间和DOMContentLoaded
事件之前触发——此时会触发Greasemonkey
加载此GM脚本:
// ==UserScript==
// @name Overwrite Alert
// @description Overwrites alert()
// @include http://jsbin.com/*
// ==/UserScript==
unsafeWindow.alert=function() {};
然后访问:
检查代码(),您将看到3个警报。Greasemonkey只能停止加载时发出的警报(通常)
其他因素可能会阻碍通用汽车停止警报的能力。。。页面加载太快,或者可能是闭包
在pastebin.com上粘贴该页面的源代码,如果可能,请不要编辑。也许你还能做些别的事。也许可以通过adblock阻止脚本
否则,您必须编写扩展/附加组件。更新:对于Tampermonkey、Violentmonkey、Greasemonkey的现代版本(但强烈建议避免使用GM 4+):
在大多数情况下,您可以使用@run-at-document start
截获alert()
。例如,加载此脚本,然后访问:
请注意,如果您正在运行Tampermonkey,您可以切换到注入模式:即时
:
Tampermonkey设置=>配置模式:高级
=>实验=>注入模式:即时
如果脚本需要GM_uuu函数,则必须将@grant
设置为“无”。在这种情况下,请像这样使用exportFunction()
:
// ==UserScript==
// @name _Overwrite Alert
// @match *://output.jsbin.com/*
// @grant GM_addStyle
// @run-at document-start
// ==/UserScript==
function myAlert (str) {
console.log ("Greasemonkey intercepted alert: ", str);
}
unsafeWindow.alert = exportFunction (myAlert, unsafeWindow);
对于2011年8月之前的Greasemonkey,旧答案是:
unsafeWindow.alert=function(){}代码>在选定的情况下工作正常
但是,如果这确实是页面上的代码,那么您将无法使用Greasemonkey停止该警报
这是因为该警报将在页面加载期间和DOMContentLoaded
事件之前触发——此时会触发Greasemonkey
加载此GM脚本:
// ==UserScript==
// @name Overwrite Alert
// @description Overwrites alert()
// @include http://jsbin.com/*
// ==/UserScript==
unsafeWindow.alert=function() {};
然后访问:
检查代码(),您将看到3个警报。Greasemonkey只能停止加载时发出的警报(通常)
其他因素可能会阻碍通用汽车停止警报的能力。。。页面加载太快,或者可能是闭包
在pastebin.com上粘贴该页面的源代码,如果可能,请不要编辑。也许你还能做些别的事。也许可以通过adblock阻止脚本
否则,您将不得不编写一个扩展/附加组件。如果使用,则以下操作将始终有效:
// ==UserScript==
// @id alert-killer-test@erikvold.com
// @name Overwrite Alert
// @description Overwrites alert()
// @include *
// @run-at document-start
// ==/UserScript==
unsafeWindow.alert=function() {};
您可以。如果使用,则以下操作将始终有效:
// ==UserScript==
// @id alert-killer-test@erikvold.com
// @name Overwrite Alert
// @description Overwrites alert()
// @include *
// @run-at document-start
// ==/UserScript==
unsafeWindow.alert=function() {};
你可以。@01,那代码..
放在一页的正文中,你想用Greasemonkey中止吗?@01,那代码..
放在一页的正文中,你想用Greasemonkey中止吗?是的,这是正确的,只是不知道这是否是他的真正意思。我已经粘贴了代码。我会看看adblock,thx的建议。如果您还有其他想法,请与我们分享。@01,是的,因为它是在GM之前执行的。@01:由于您的警报被编码到正文中并以内联方式触发,GM无法阻止它。因为它不是从文件加载的,所以adblock无法阻止它。几乎你唯一的选择就是一个浏览器插件,它在页面下载时重写/过滤HTML。事实上,由于这是一个局域网,可用性极低,请向经理和IT员工投诉。你可能会在.thx上找到很多弹药,我的公司不关心可用性,但我不经常使用那个页面,所以没关系。如果我觉得无聊,我可能会尝试写附加组件。谢谢你的帮助,现在我更了解通用汽车的工作原理了。是的,这是正确的,只是不知道这是否是他的真正意思。我已经粘贴了代码。我会看看adblock,thx的建议。如果您还有其他想法,请与我们分享。@01,是的,因为它是在GM之前执行的。@01:由于您的警报被编码到正文中并以内联方式触发,GM无法阻止它。因为它不是从文件加载的,所以adblock无法阻止它。几乎你唯一的选择就是一个浏览器插件,它在页面下载时重写/过滤HTML。事实上,由于这是一个局域网,可用性极低,请向经理和IT员工投诉。你可能可以在.thx上找到很多弹药,我的公司不关心可用性,但我不经常使用那个页面,所以我