簡體   English   中英

如何手動調度 hashchange 事件

[英]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

在這里收到答復后:

http://forum.php.pl/index.php?showtopic=213470

以下是如何使其也適用於 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM