1 - 对于.addEventListener
到hashChange
事件,WebKit(适用于iPad的Safari的主要功能,如果适用于Win Chrome)的正确语法是什么?
2 - 是否有可能(以及如何)在上述浏览器上通过.dispatchEvent
手动/编程调度hashChange事件?
TIA。
我找到了1的答案:
window.addEventListener("hashchange", function() {console.log(location.hash)});
但我仍然不知道如何发送hashchange
手册,因为我不知道EVENTOBJECT
我应该传递给window.dispatchEvent(EVENTOBJECT)
。
答案 0 :(得分:6)
如果你想强制hashchcange事件而没有文字改变哈希,你应该调用:
window.dispatchEvent(new HashChangeEvent("hashchange"))
传递给事件处理程序的对象将提供此道具:
String oldURL;
String newURL;
这是我发现的唯一信息:
https://github.com/WebKit/webkit/blob/master/Source/WebCore/dom/HashChangeEvent.h
收到答案后:
答案 1 :(得分:0)
这也是在Internet Explorer(IE11)上运行它的方法
/**
* cross browser hash change event dispatch
*/
function dispatchHashchange() {
if (typeof HashChangeEvent !== "undefined") {
window.dispatchEvent(new HashChangeEvent("hashchange"));
return;
}
// HashChangeEvent is not available on all browsers. Use the plain Event.
try {
window.dispatchEvent(new Event("hashchange"));
return;
} catch (error) {
// but that fails on ie
}
// IE workaround
const ieEvent = document.createEvent("Event");
ieEvent.initEvent("hashchange", true, true);
window.dispatchEvent(ieEvent);
}