在没有库/框架的情况下防止IE7中的默认锚行为

时间:2011-12-20 20:16:51

标签: javascript html internet-explorer hyperlink anchor

我有一个像这样的链接

<a onclick="return false;" href="http://somesite.com">my link</a>

在firefox,chrome和safari中,当您单击它时,此链接不会执行任何操作。在IE7中,链接仍然转到http://somesite.com。有没有办法防止这种情况发生?

我没有使用像jquery这样的框架,只是原始的javascript。

4 个答案:

答案 0 :(得分:1)

试试这个:

<a onclick="window.event && (event.returnValue = false); return false;" href="http://somesite.com">hi</a>

答案 1 :(得分:0)

根据某些网站,event.returnValue = false;应该有所帮助。当然其他浏览器会抛出错误,因为它们不支持returnValue,所以你应该检查一下。 This article甚至建议在点击时删除href属性: - )

失败保存应

<a onclick="...; if (window.event && typeof window.event.returnValue == 'boolean') return window.event.returnValue = false; return false;" href="http://somesite.com">hi</a>

使用js添加eventListener,您还可以在符合标准的浏览器中使用event.preventDefault();,其中event是给予侦听器函数的参数。

答案 2 :(得分:0)

一个简单的"return false;"在IE中一直对我有用。我没有IE7可供测试,但它现在在IE8中对我有用,我确信它曾经在IE6中工作。

不过,您可以尝试以下内容:

<a onclick="return cancelDefault();" href="http://somesite.com">my link</a>

<script>
function cancelDefault(e) {
   if (!e) e = window.event;
   e.returnValue = false;
   return false;
}
</script>

不支持returnValue的浏览器会忽略它:如果您在事件对象上创建该名称的新属性,他们不会介意。

答案 3 :(得分:0)

我想出了这个(从其他一些答案中获得灵感)

<script>
function stopIEAnchor(){
   if (typeof window.event !== "undefined") 
      return window.event.returnValue = false; 

    return false;
}
</script>

<a onclick="return stopIEAnchor()" href="http://somesite.com">link</a>

我会暂时搁置这个问题一段时间,看看我们是否可以获得更多的解决方案或输入。