在JS库中使用事件而不覆盖它们

时间:2015-07-18 11:12:03

标签: javascript events

我正在创建一个我经常使用的小型自定义函数库,因此每次开始新项目时我都不需要重新定义它们。在库中,我需要更新URL哈希更改的值,因此需要使用window.onhashchange

问题在于,无论何时我需要在库外使用window.onhashchange,它都会覆盖库提供的功能。有没有办法解决?

2 个答案:

答案 0 :(得分:2)

您需要使用window.addEventListener

function myListener(evt) {
  console.log(evt);
}

// before
window.onhashchange = myListener;

// after
window.addEventListener('hashchange', myListener);

删除以前添加的侦听器:window.removeEventListener(myListener);

答案 1 :(得分:1)

您需要使用addEventListener来使用多种功能

  function customFunction(args){
      console.log("custome override");
  }

  function libHashChange(args){
      console.log("library methods");
  }

  window.addEventListener("hashchange", libHashChange);
  window.addEventListener("hashchange", customFunction);