7

1-WebKit(iPadのSafariのプライマリ、Win Chromeで動作する場合に適しています).addEventListenerからhashChangeイベントへの正しい構文は何ですか?

.dispatchEvent2-上記のブラウザでhashChangeイベントを手動/プログラムでディスパッチすることは可能ですか(そしてどのように) ?

TIA。

私は1の答えを見つけました:

window.addEventListener("hashchange", function() {console.log(location.hash)});

でも、何に渡せばいいのhashchangeかわからないので、どうやってマニュアルを送るのかまだわかりません。EVENTOBJECTwindow.dispatchEvent(EVENTOBJECT)

4

2 に答える 2

18

文字通りハッシュを変更せずに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

于 2013-03-04T22:10:31.143 に答える
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);
}
于 2019-10-18T11:31:26.460 に答える