1-什么是正确的语法从WebKit (主要用于iPad上的Safari,如果它在Win Chrome上工作很好)到.addEventListener到hashChange事件?
2-是否可以(以及如何)在上面提到的浏览器上通过.dispatchEvent手动/以编程方式分派hashChange事件?
蒂娅。
我已经找到了1的答案:
window.addEventListener("hashchange", function() {console.log(location.hash)});
但我仍然不知道如何发送hashchange手册,因为我不知道我应该传递给window.dispatchEvent(EVENTOBJECT)的EVENTOBJECT。
发布于 2013-03-05 06:10:31
如果你想强制hashchcange事件而不直接改变散列,你应该调用:
window.dispatchEvent(new HashChangeEvent("hashchange"))传递给事件处理程序的对象将具有以下属性:
String oldURL;
String newURL;这是我找到的唯一关于这个的信息:
https://github.com/WebKit/webkit/blob/master/Source/WebCore/dom/HashChangeEvent.h
在这里收到答案后:
发布于 2019-10-18 19:31:26
下面是如何让它在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);
}https://stackoverflow.com/questions/15035217
复制相似问题