2015-12-15 80 views
0

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

爲此,有沒有在javascript中關閉另一個源腳本,然後再打開它的方法?

我沒有修改目標腳本本身的選項,也沒有將它從最初包含在文檔中。

+1

不,謝謝。你可以做的事情不多。 –

+1

你可以控制腳本加載的順序嗎? – Bioto

+0

@Bioto不幸的是,沒有。 – liljoshu

回答

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

這將產生警報13,即使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); 
+0

謝謝,這是迄今爲止我見過的最好主意。沒有完全解決我的問題,但絕對讓我更近一步。謝謝! – liljoshu