如何手动调度hashchange事件
How to manually dispatch hashchange event
1-WebKit(主要用于iPad上的Safari,如果它在Win-Chrome上工作,则很好)到.addEventListener
到hashChange
事件的正确语法是什么?
2-是否可以(以及如何)在上述浏览器上通过.dispatchEvent
手动/编程地调度hashChange事件?
TIA。
我找到了1:的答案
window.addEventListener("hashchange", function() {console.log(location.hash)});
但我仍然不知道如何发送hashchange
手册,因为我不知道应该将什么EVENTOBJECT
传递给window.dispatchEvent(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);
}
相关文章:
- 分派点击事件并保留击键修饰符
- 模糊事件的Javascript测试
- keyup事件处理程序更改焦点不适用于快速键入
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 如何使Javascript动态html表及其上的事件
- 使用类从一个标记中双击事件
- 如何在未直接触发的情况下停止事件
- 用于IE7的hashchange polyfill,每个刻度可以跟踪多个事件
- 让hashchange事件在所有浏览器(包括IE7)中工作
- 仅捕获不是由锚点单击引起的hashchange事件
- 防止'hashchange'事件
- 了解hashchange事件的执行顺序
- 如何确保绑定到hashChange事件不会冒泡
- JQuery hashchange事件-在哪里放置
- 移除哈希时是否触发hashchange事件
- jQuery hashchange事件立即执行动画,没有速度
- 以编程方式更新哈希,而不触发hashchange事件
- IE7问题中的绑定hashchange事件
- jQuery:如何在hashchange事件处理程序中查找元素
- 如何手动调度hashchange事件