有一個外部JS文件未從我的服務器加載到我的頁面上。總之,我沒有任何控制該文件,我無法編輯該文件。我創建了一個函數,我希望在調用該外部文件中的函數後調用它。如何檢查是否從外部js文件中調用該函數
我知道外文件的功能名稱。我希望在執行來自外部文件的函數後調用我的函數。我該怎麼做?
讓我知道,如果你不明白我的問題在這裏。我會試着再解釋一遍。
在此先感謝
有一個外部JS文件未從我的服務器加載到我的頁面上。總之,我沒有任何控制該文件,我無法編輯該文件。我創建了一個函數,我希望在調用該外部文件中的函數後調用它。如何檢查是否從外部js文件中調用該函數
我知道外文件的功能名稱。我希望在執行來自外部文件的函數後調用我的函數。我該怎麼做?
讓我知道,如果你不明白我的問題在這裏。我會試着再解釋一遍。
在此先感謝
如果外國功能是在全球範圍內,你可以用自己的包裝更換:
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
變量可能不是它應該是的。
與.apply和參數變量很好的接觸。 – scaryman 2012-08-13 14:34:05
您必須用自己的替換外部函數。這可能也可能不可能,取決於事物的執行順序。
功能後(ForeignFunc())加載到頁面
var _originalForeignFunc = ForeignFunc;
ForeignFunc = function() {
_originalForeignFunc();
//now do whatever you want to do here
alert("After Foreign Func Execution");
}
請記住,這隻會工作,如果你可以用自己的定義替換ForeignFunc()
它實際上調用之前。
總之,你不能。如果外部函數設置了一些全局可訪問的變量或屬性,那麼可以在腳本中進行一次間隔來檢查它,然後調用你的函數。但這很不好。情況遠非理想。 – Utkanos 2012-08-13 14:09:02
jQuery在哪裏發揮作用? – Alnitak 2012-08-13 14:16:07
@Alnitak好吧我刪除了jquery標籤。雖然我使用jQuery來做我的東西。但我同意這不是一個jQuery相關的問題。謝謝。 – 2012-08-13 14:19:57