我有一個文件,我正在作爲一個更大的網站的一部分。很多腳本都是自動加載的,但有一個是破壞的,我不知道它是如何包含的。我無法刪除它,因爲它在其他地方(它確實是事件監聽器)是需要的,但是對於我正在運行的其他代碼而言,它沒有任何作用,導致無意義的頁面刷新,從而導致用戶的工作無效(然後,僅在鉻)。關閉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