IE 下修改a标签的href的值碰到的怪象

今天在IE 下碰到一个奇怪的问题,就是当我修改a的标签内容有@字符,在修改该标签的href属性的时候,a标签的内容变成了该标签的

href 的值。

代码如下

<!DOCTYPE HTML>
<html>
<body>
<a id="fruits">fruites</a>
</body>
<script>
   document.getElementById('fruits').innerHTML = "Test Event / D @ N{}t ?u~cha$e"; 
   document.getElementById('fruits').href = 'http://www.qq.com';
</script>
</html>

这个时候就会出现这个诡异的问题,在火狐和谷歌浏览器都不回,ie都会有这个问题。

 

我想改变下修改的赋值顺序就应该不会出现该问题了,实践证明也是正确的,代码如下。

<!DOCTYPE HTML>
<html>
<body>
<div id="fruits">fruites</div>
</body>
<script>
   document.getElementById('fruits').href = 'http://www.qq.com';
   document.getElementById('fruits').innerHTML = "Test Event / D @ N{}t ?u~cha$e";
</script>
</html>

 

我猜想应该是IE内核的问题吧。

 

试图找原因,百度

发现

http://www.planabc.net/2008/11/06/ie-href-bug/

文章。但是好像没怎么明白。

 

发现了

if(/*@cc_on!@*/0) {
var sSuffix = ( /*@cc_on!@*/false ) ? 'ie' : 'gecko' ;

    /*@cc_on alert("显示浏览器版本号:"+@_jscript_version) @*/

    alert(@_jscript_version)

    alert("浏览器版本为"+sSuffix)
     
   }

/*@cc_on!@*/false 是可以判断是否是IE从来没用过。

posted @ 2012-06-26 11:18  phpzxh  阅读(1382)  评论(0编辑  收藏  举报