[英]How to manually dispatch hashchange event
1 -什么是正確的語法的WebKit(主要為Safari瀏覽器在iPad上,好,如果它工作在Win Chrome)即可.addEventListener
,以hashChange
事件?
2 -是是可能的(以及如何)手動/編程調度hashChange事件由.dispatchEvent
上的瀏覽器如上所述?
TIA。
我找到了 1 的答案:
window.addEventListener("hashchange", function() {console.log(location.hash)});
但我仍然不知道如何調度hashchange
手冊,因為我不知道我應該傳遞給window.dispatchEvent(EVENTOBJECT)
什么EVENTOBJECT
。
如果你想強制 hashchcange 事件而不從字面上改變哈希,你應該調用:
window.dispatchEvent(new HashChangeEvent("hashchange"))
傳遞給事件處理程序的對象將有以下道具可用:
String oldURL;
String newURL;
這是我找到的唯一信息:
https://github.com/WebKit/webkit/blob/master/Source/WebCore/dom/HashChangeEvent.h
在這里收到答復后:
以下是如何使其也適用於 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);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.