我想检查一下每次更改网址时,我都会触发一个事件。因为,没有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允许多个实例。如果我多次初始化我的库,我会根据库初始化的次数来获取消息。无论如何,即使我多次运行该片段,我仍然可以确保只附加一个事件?
答案 0 :(得分:1)
实现这一目标的一种方法可能是使用中间对象。此方法允许您控制要删除它的实例中的事件,并且可以轻松扩展以用于其他类似用例。我添加了一个实例的公共isBound布尔值,您需要验证该事件是否已订阅。
onRendered