如何确保只添加一次活动?

时间:2016-08-30 16:10:40

标签: javascript

我想检查一下每次更改网址时,我都会触发一个事件。因为,没有pushstate事件我正在遵循这个建议How to get notified about changes of the history via history.pushState?

(function(history) {
  var pushState = history.pushState;
  history.pushState = function(state) {
    if (typeof history.onpushstate == "function") {
      history.onpushstate({
        state: state
      });
    }
    return pushState.apply(history, arguments);
  }

  function e(event) {
    console.log("location: " + document.location + ", state: " + JSON.stringify(event.state));
  }
  window.addEventListener('popstate', e);
  history.onpushstate = e;
})(window.history)

但是,我的lib允许多个实例。如果我多次初始化我的库,我会根据库初始化的次数来获取消息。无论如何,即使我多次运行该片段,我仍然可以确保只附加一个事件?

1 个答案:

答案 0 :(得分:1)

实现这一目标的一种方法可能是使用中间对象。此方法允许您控制要删除它的实例中的事件,并且可以轻松扩展以用于其他类似用例。我添加了一个实例的公共isBound布尔值,您需要验证该事件是否已订阅。

onRendered