如果函数是在另一个.js文件中启动的话,是否可以监听?
例如,function foo()
被解雇了。
是否可以在每次foo()
运行时运行一段代码而不放置我想在该函数中运行的代码?
答案 0 :(得分:3)
虽然dops上面指出了正确的答案,但我会删除一种跨浏览器兼容的方式。
首先,我们需要从被触发的函数中调度一个事件。
(以下片段进入要收听的功能)
// Create the event
var event = new CustomEvent("name-of-event", { "detail": "Example of an event" });
document.dispatchEvent(event);
其次,我们需要添加一个eventListener来监听函数是否被触发:
document.addEventListener("name-of-event", function(e) {
console.log(e.detail); // Prints "Example of an event"
});
现在这在FF / Chrome中运行得很好,但IE并不支持它。因此,我们需要为其创建polyfill。
只需将此函数放在脚本中的任何位置,IE就会支持上面的代码片段。
(function () {
function CustomEvent ( event, params ) {
params = params || { bubbles: false, cancelable: false, detail: undefined };
var evt = document.createEvent( 'CustomEvent' );
evt.initCustomEvent( event, params.bubbles, params.cancelable, params.detail );
return evt;
};
CustomEvent.prototype = window.Event.prototype;
window.CustomEvent = CustomEvent;
})();
<强>来源:强>
https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent
答案 1 :(得分:1)
您需要了解的是javascript事件。如何创建自己的事件并触发它。
See this answer for a good start
你想要做的是让函数触发一个事件(比如funcCalled
),并在你的主应用程序中为该事件添加一个监听器。然后,听者可以根据您的需要发送指令。