我试图让以下代码在所有版本的 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"只是为了让它在 IE9 中工作。
我也不想使用不同的标签(例如尝试过 span 标签),因为在所有浏览器中设置样式很棘手。
还有其他想法吗?
看起来这是一个合法的错误,我已经提交了修复它的请求。我现在还提出了一个解决方法:https://connect.microsoft.com/IE/feedback/details/812247/event-preventdefault-or-return-false-dont-work-in-ie9 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?
EDIT
也可以参考一下console
如果未打开开发工具,对象将在 IE
// 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
上面的代码可以避免问题,最好从要发布的最终代码中删除所有日志记录。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)