2012-08-13 45 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()它实际上调用之前。

相关问题