2012-08-13 73 views
1

有一個外部JS文件未從我的服務器加載到我的頁面上。總之,我沒有任何控制該文件,我無法編輯該文件。我創建了一個函數,我希望在調用該外部文件中的函數後調用它。如何檢查是否從外部js文件中調用該函數

我知道外文件的功能名稱。我希望在執行來自外部文件的函數後調用我的函數。我該怎麼做?

讓我知道,如果你不明白我的問題在這裏。我會試着再解釋一遍。

在此先感謝

+0

總之,你不能。如果外部函數設置了一些全局可訪問的變量或屬性,那麼可以在腳本中進行一次間隔來檢查它,然後調用你的函數。但這很不好。情況遠非理想。 – Utkanos 2012-08-13 14:09:02

+0

jQuery在哪裏發揮作用? – Alnitak 2012-08-13 14:16:07

+0

@Alnitak好吧我刪除了jquery標籤。雖然我使用jQuery來做我的東西。但我同意這不是一個jQuery相關的問題。謝謝。 – 2012-08-13 14:19:57

回答

5

如果外國功能是在全球範圍內,你可以用自己的包裝更換:

var _old = foreignFunction; 
foreignFunction = function() { 

    // put pre-call stuff here 
    ... 

    // call with the original context and args 
    _old.apply(this, arguments); 

    // and post-call stuff here 
    ... 
} 

注意使用.apply,以確保無論背景和論據提供給原有的功能仍然提供到它。沒有這個,該函數中的this變量可能不是它應該是的。

+0

與.apply和參數變量很好的接觸。 – scaryman 2012-08-13 14:34:05

2

您必須用自己的替換外部函數。這可能也可能不可能,取決於事物的執行順序。

功能後(ForeignFunc())加載到頁面

var _originalForeignFunc = ForeignFunc; 
ForeignFunc = function() { 
    _originalForeignFunc(); 
    //now do whatever you want to do here 
    alert("After Foreign Func Execution"); 
} 

請記住,這隻會工作,如果你可以用自己的定義替換ForeignFunc()它實際上調用之前。

相關問題