是否可以监听是否在另一个.js文件中触发了一个函数

时间:2014-05-10 15:15:54

标签: javascript paperjs

如果函数是在另一个.js文件中启动的话,是否可以监听?

例如,function foo()被解雇了。

是否可以在每次foo()运行时运行一段代码而不放置我想在该函数中运行的代码?

2 个答案:

答案 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

How to trigger event in JavaScript?

答案 1 :(得分:1)

您需要了解的是javascript事件。如何创建自己的事件并触发它。

See this answer for a good start

你想要做的是让函数触发一个事件(比如funcCalled),并在你的主应用程序中为该事件添加一个监听器。然后,听者可以根据您的需要发送指令。