1

我的页面上有一个没有从我们的服务器加载的外部 JS 文件。简而言之,我对该文件没有任何控制权,也无法编辑该文件。我创建了 1 个函数,我希望在调用该外部文件中的函数之后调用它。

我知道外部文件的功能名称。一旦执行来自外部文件的函数,我希望调用我的函数。我该怎么做?

如果您不明白我的问题,请告诉我。我会尝试再次解释它。

提前致谢

4

2 回答 2

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函数内的变量可能不是它应该是的。

于 2012-08-13T14:13:27.690 回答
2

你必须用你自己的替换外部函数。这可能会也可能不会,取决于执行的顺序。

函数 (ForeignFunc()) 加载到页面后

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

ForeignFunc()请记住,只有在实际调用之前您可以用自己的定义替换它才会起作用。

于 2012-08-13T14:10:41.820 回答