【发布时间】:2014-01-12 02:51:09
【问题描述】:
我正在尝试让以下代码在所有版本的 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 中。例如:
在 IE9 中离开 href="" 会重定向到当前链接本身。
<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
【问题讨论】:
-
我在你的代码中看到了 jQuery - 注意 jQuery 事件和普通 DOM 事件是不同的,preventDefault 即使在 jQuery 中也不起作用?
-
它当然可以在所有其他浏览器中使用?
-
仅作记录,在您的实际页面中,上面的第一个 JS 位于脚本标记和链接下方 - 正确吗?
-
是的,代码在 Javascript 文件中,并且包含 JQuery 作为库。 preventDefault 即使在 JQuery 格式中也不起作用,尽管它似乎已被触发(使用开发人员工具添加了一个调试点)。我的代码只是显示正在发生的事情的一个示例。 @adeneo 当然 :)
-
如果有帮助,HTML 将通过 ASP 代码生成。也许那里发生了什么事情没有在点击时及时在 JQuery 中添加 .click 触发器?
标签: javascript cross-browser internet-explorer-9