首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何手动调度hashchange事件

如何手动调度hashchange事件
EN

Stack Overflow用户
提问于 2013-02-23 07:52:05
回答 2查看 5.6K关注 0票数 6

1-什么是正确的语法从WebKit (主要用于iPad上的Safari,如果它在Win Chrome上工作很好)到.addEventListenerhashChange事件?

2-是否可以(以及如何)在上面提到的浏览器上通过.dispatchEvent手动/以编程方式分派hashChange事件?

蒂娅。

我已经找到了1的答案:

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

但我仍然不知道如何发送hashchange手册,因为我不知道我应该传递给window.dispatchEvent(EVENTOBJECT)EVENTOBJECT

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-05 06:10:31

如果你想强制hashchcange事件而不直接改变散列,你应该调用:

代码语言:javascript
复制
window.dispatchEvent(new HashChangeEvent("hashchange"))

传递给事件处理程序的对象将具有以下属性:

代码语言:javascript
复制
String oldURL;
String newURL;

这是我找到的唯一关于这个的信息:

https://github.com/WebKit/webkit/blob/master/Source/WebCore/dom/HashChangeEvent.h

在这里收到答案后:

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

票数 17
EN

Stack Overflow用户

发布于 2019-10-18 19:31:26

下面是如何让它在Internet Explorer (IE11)上工作的方法

代码语言:javascript
复制
/**
 * 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);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15035217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档