Javascript 如何检查函数是否从外部js文件调用
在我的页面上有一个外部JS文件不是从我们的服务器加载的。简言之,我没有任何对该文件的控制,我不能编辑该文件。我创建了一个函数,我希望在调用该外部文件中的函数后调用该函数 我知道外文文件的函数名。我希望在执行来自外部文件的函数后调用我的函数。我怎么做 如果你不明白我的问题,请告诉我。我会再解释一遍Javascript 如何检查函数是否从外部js文件调用,javascript,function,Javascript,Function,在我的页面上有一个外部JS文件不是从我们的服务器加载的。简言之,我没有任何对该文件的控制,我不能编辑该文件。我创建了一个函数,我希望在调用该外部文件中的函数后调用该函数 我知道外文文件的函数名。我希望在执行来自外部文件的函数后调用我的函数。我怎么做 如果你不明白我的问题,请告诉我。我会再解释一遍 提前感谢您必须用自己的函数替换外部函数。这可能是也可能是不可能的,这取决于事情的执行顺序 将函数(ForeignFunc())加载到页面后 var _originalForeignFunc = Fore
提前感谢您必须用自己的函数替换外部函数。这可能是也可能是不可能的,这取决于事情的执行顺序 将函数(ForeignFunc())加载到页面后
var _originalForeignFunc = ForeignFunc;
ForeignFunc = function() {
_originalForeignFunc();
//now do whatever you want to do here
alert("After Foreign Func Execution");
}
请记住,只有在实际调用之前用自己的定义替换
ForeignFunc()
,这才有效 您必须用自己的函数替换外部函数。这可能是也可能是不可能的,这取决于事情的执行顺序
将函数(ForeignFunc())加载到页面后
var _originalForeignFunc = ForeignFunc;
ForeignFunc = function() {
_originalForeignFunc();
//now do whatever you want to do here
alert("After Foreign Func Execution");
}
请记住,只有在实际调用之前用自己的定义替换
ForeignFunc()
,这才有效 如果外部函数在全局范围内,您可以用自己的包装器替换它:
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
,以确保提供给原始函数的任何上下文和参数仍然提供给它。否则,该函数中的这个
变量可能不是它应该的样子。如果外部函数在全局范围内,您可以用自己的包装器替换它:
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
,以确保提供给原始函数的任何上下文和参数仍然提供给它。如果没有它,函数中的这个变量可能不是它应该的样子。简而言之,你不能。如果外部函数设置了一些全局可访问的变量或属性,您可以在脚本中执行一个间隔来检查它,然后调用您的函数。但这是骇客。情况远非理想。jQuery在哪里发挥作用?@Alnitak好吧,我删除了jQuery标签。虽然我使用jquery来完成我的工作。但我同意这不是一个与jquery相关的问题。谢谢。@Kuldeepdatary我担心的是,如果这个函数实际上是一个jQuery插件,那么覆盖它的方法可能会有所不同。哦,我明白了。。不,它不是jquery插件。:)简言之,你不能。如果外部函数设置了一些全局可访问的变量或属性,您可以在脚本中执行一个间隔来检查它,然后调用您的函数。但这是骇客。情况远非理想。jQuery在哪里发挥作用?@Alnitak好吧,我删除了jQuery标签。虽然我使用jquery来完成我的工作。但我同意这不是一个与jquery相关的问题。谢谢。@Kuldeepdatary我担心的是,如果这个函数实际上是一个jQuery插件,那么覆盖它的方法可能会有所不同。哦,我明白了。。不,它不是jquery插件。:)很好地使用了.apply和arguments变量。很好地使用了.apply和arguments变量。