在javascript中关闭脚本?

时间:2015-12-15 00:14:25

标签: javascript html

我有一份文件,我正在处理一个更大的网站。很多脚本都是自动加载的,但有一个是破坏的东西,我不知道它是如何包含的。我不能删除它,因为它需要在其他地方(它做事件监听器),但它没有任何目的,因为我正在运行其他代码的部分导致无意义的页面刷新,这会破坏用户的工作(然后,仅在铬)。

为此,javascript中是否有一种方法可以关闭另一个源脚本,然后再将其重新打开?

我没有选择修改目标脚本本身或使其不能最初包含在文档中。

1 个答案:

答案 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,也会生成警告32

对于更复杂的方法或非布尔值的执行条件,代理模式带有附加的"标志"可能很有用(示例仍然是布尔值,但可能有多个条件):

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);