gpt4 book ai didi

javascript - event.preventDefault() 或 return false 在 IE9 中不起作用

转载 作者:行者123 更新时间:2023-11-29 18:18:51 25 4
gpt4 key购买 nike

我试图让以下代码在所有版本的 IE 中工作,就像它在其他浏览器中工作一样:

  <a href="" class="specificClass">Click Me </a>
//Javascript
$(".specificClass").click(
function(e) {
e.preventDefault();
// Do Something
//return false; Doesn't work either
}
);

切换到 href="#" 使其尝试转到页面顶部,同样仅在 IE9 中。例如:离开 href="" 重定向到 IE9 中的当前链接本身。

<a href="#" onclick="doSomething(this); return false;"> Click Me Two </a>

似乎这两种方法都会触发调用 onclick Javascript,但 href="" 的默认行为不会被覆盖。如果我使用 event.preventDefault() 什么也不会发生。

以下方法有效:

<a href="javascript:doSomething(this);"> Click Me Two </a>
function doSomething(me) {

// event.preventDefault is not needed as the javascript is added via href

}

但是我不想让 href="javascript:"或 onclick ="doSomething"用于我所有的 anchor 标记 只是让它在 IE9 中工作。我也不想使用不同的标签(例如尝试使用 span 标签),因为在所有浏览器中设置样式都很棘手。

还有其他想法吗?

看起来这是一个合法的错误,我已经提交了修复它的请求。我现在也提出了一个解决方法: https://connect.microsoft.com/IE/feedback/details/812247/event-preventdefault-or-return-false-dont-work-in-ie9

最佳答案

在 IE9 中,仍然部分使用遗留事件处理程序模型。 preventDefault() 仅在使用 addEventListener() 附加事件监听器时有效。

如果你想阻止内联处理程序的默认操作,你必须使用旧方法:

event.returnValue = false;
event.cancelBubble = true; // This is affects like event.stopPropagation() in older IEs

虽然 jQuery 不工作很奇怪,但我对此没有任何解释......除非你在兼容模式下运行 IE 并使用 jQuery 2.X?


编辑

如果未打开 Dev Tools,对 console 对象的引用也会破坏 IE<10 中的代码。您可以在 SO 找到很多针对此问题的修复程序。我最喜欢的是:

// The very first lines in the global context
if (!window.console) {
window.console = {
log: function () {}
// Add other console methods, if the scripts on the page are using them
}
}

虽然上面的代码可以避免 console 问题,但最好从要发布的最终代码中删除所有日志记录。

关于javascript - event.preventDefault() 或 return false 在 IE9 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20751110/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com