我有一份文件,我正在处理一个更大的网站。很多脚本都是自动加载的,但有一个是破坏的东西,我不知道它是如何包含的。我不能删除它,因为它需要在其他地方(它做事件监听器),但它没有任何目的,因为我正在运行其他代码的部分导致无意义的页面刷新,这会破坏用户的工作(然后,仅在铬)。
为此,javascript中是否有一种方法可以关闭另一个源脚本,然后再将其重新打开?
我没有选择修改目标脚本本身或使其不能最初包含在文档中。
答案 0 :(得分:2)
排序......
你总是可以在变量中存储任何JavaScript方法,替换它的实现,做你自己的东西,最后恢复它。
从您的问题不清楚这是否可能是您的问题的解决方案,我只是提到这一点,因为所有"不可能"评价。
https://jsfiddle.net/3grfL30s/
function alertSomething(cp){
alert("TEST: " + cp);
}
alertSomething(1);
// from here i dont want alerts, no matter what code is calling the method
// backup method to "x" to restore it later.
var x = alertSomething;
alertSomething = function(){} //overwrite alertSomething to do nothing
//do my work, verify alertSomething is doing nothing
alertSomething(2);
//restore alert method
alertSomething = x;
//verify its working agian
alertSomething(3);
即使在您的代码执行过程中调用1
,也会生成警告3
和2
。
对于更复杂的方法或非布尔值的执行条件,代理模式带有附加的"标志"可能很有用(示例仍然是布尔值,但可能有多个条件):
https://jsfiddle.net/3grfL30s/1/
function alertSomething(cp){
alert("TEST: " + cp);
}
var doIt = 1;
var originalAlert = alertSomething;
alertSomething = function(cp){
if (doIt){
return originalAlert.apply(this, arguments);
}
}
alertSomething(1);
// in here i dont want alerts
doIt = 0;
//do my work, verify alertSomething is doing nothing
alertSomething(2);
//restore alert method
doIt = 1;
//verify its working agian
alertSomething(3);