我有一个文件,我正在作为一个更大的网站的一部分。很多脚本都是自动加载的,但有一个是破坏的,我不知道它是如何包含的。我无法删除它,因为它在其他地方(它确实是事件监听器)是需要的,但是对于我正在运行的其他代码而言,它没有任何作用,导致无意义的页面刷新,从而导致用户的工作无效(然后,仅在铬)。关闭javascript中的脚本?
为此,有没有在javascript中关闭另一个源脚本,然后再打开它的方法?
我没有修改目标脚本本身的选项,也没有将它从最初包含在文档中。
我有一个文件,我正在作为一个更大的网站的一部分。很多脚本都是自动加载的,但有一个是破坏的,我不知道它是如何包含的。我无法删除它,因为它在其他地方(它确实是事件监听器)是需要的,但是对于我正在运行的其他代码而言,它没有任何作用,导致无意义的页面刷新,从而导致用户的工作无效(然后,仅在铬)。关闭javascript中的脚本?
为此,有没有在javascript中关闭另一个源脚本,然后再打开它的方法?
我没有修改目标脚本本身的选项,也没有将它从最初包含在文档中。
排序... ...
你可以在任何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
会被同时执行beeing你的代码中调用。
对于更复杂的方法或非布尔执行条件时,代理模式用额外“标志”可以是有用的(实施例仍然布尔型,但也可能有多个条件):
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);
谢谢,这是迄今为止我见过的最好主意。没有完全解决我的问题,但绝对让我更近一步。谢谢! – liljoshu
不,谢谢。你可以做的事情不多。 –
你可以控制脚本加载的顺序吗? – Bioto
@Bioto不幸的是,没有。 – liljoshu