[英]Overriding or preventing an external .js file from loading in Chrome/tampermonkey
我有一个包含以下脚本的页面:
<script type="text/javascript" src="domainstuff/evil.js"></script>
它具有以下内容:
var input = ":input[type=text]";
jQuery(function(input)
{
jQuery(input).bind('focusout', function(e)
{
//...etc
}
}
它覆盖了我的js:
document.addEventListener("focusout", function (e)
{
//etc
}
我已经尝试过tampermonkey
jQuery(input).unbind("focusout");
并且
jQuery(input).off("focusout");
但我认为我无法针对evil.js的功能。
我再也找不到SO问题,但我读到有人建议使用
// @run-at document-start
和
// @run-at document-end
但是两者都不能阻止evil.js文件的加载。
老实说,我已经能够使用uBlock Origin阻止脚本,并且我的脚本终于可以使用,但是我只想知道是否有可能在外部.js文件中覆盖函数(事件?)。
在这种情况下,输入是一个变量,假设您要在初始邪恶脚本之后加载JavaScript:
jQuery(input).off("focusout");
将不起作用,但是:
jQuery(':input[type=text').off("focusout");
应该管用。
现在,您必须确保在加载文档并执行JavaScript之后,此操作才适用,因此:
$(document).ready(function() {
jQuery(':input[type=text').off("focusout");
}
如果这也不起作用,则在应用初始eventListener之前仍会调用off()
,因此:
$(document).ready(function() {
setTimeout(function() {
jQuery(':input[type=text').off("focusout");
}, 500);
}
加载后将等待半秒钟,然后再移除焦点,然后可以应用新的事件侦听器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.