弹出之前删除警告框

Kri*_*ann 3 javascript jquery greasemonkey

我试图用Grease Monkey和jQuery删除外部站点上的Alert框.

HTML:

<!DOCTYPE html>
<html>
<body>

<script>alert("Remove this Alert box with GreaseMonkey.");</script>

<p>Hello world</p>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

GreaseMonkey脚本(目前没有jQuery部分):

// ==UserScript==
// @name        Remove Alert box
// @include     http://www.example.com/alert_remove/
// ==/UserScript==

var node = document.getElementsByTagName('alert');
node.parentNode.removeChild(node);

if(window.alert) {
    alert("ALERT DETECTED");  // No response.
}
Run Code Online (Sandbox Code Playgroud)

我不认为这可以使用jQuery解决,因为jQuery代码仅在页面加载并且警报可见时触发($(document).ready).

我可以从DOM中删除alert元素吗?
我是否可以发送按键(13 = Enter)来处理警报?

谢谢.

Ric*_*ket 7

在加载页面之前Greasemonkey不会运行,因此使用Greasemonkey是不可能的.如果您确实如此,可以使用与此Upside-Down-Ternet技巧中使用的方法类似的方法设置代理(例如squid).

如果您可以在其他代码调用之前运行自己的JavaScript alert,那么您可能希望执行以下操作:

window.backupAlert = window.alert;
window.alert = function () {return true};
Run Code Online (Sandbox Code Playgroud)

(测试工作)

然后,您可以在自己的脚本中使用该backupAlert函数alert,但是其他假设alert仍然存在的脚本将不会显示弹出窗口.

这样做的原因是alert是window对象内部的一个函数 ; 它不是文档中的标记或DOM对象.

不,你不能用JavaScript发送按键.这是全球真实的; 您可以触发处理按键事件的功能,但不能发送操作系统点击或按键事件.