找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1822|回复: 0

[教程] IE 下 href 的 BUG

[复制链接]
发表于 2012-4-30 17:43:27 | 显示全部楼层 |阅读模式 来自 中国–江苏–南京
在浏览器 IE6 、IE7、Firefox2+、Firefpx3+、Opera9.6+、Safari3.1+中测试以下代码(Demo):
  1. <div id="test">
  2.     <a href="#"> test </a>
  3. </div>
  4. <div id="result"></div>

  5. <script type="text/javascript">
  6. (function(){
  7.     var test = document.getElementById('test');
  8.     alert(test.innerHTML);

  9.     var result =  document.getElementById('result');
  10.     result.innerHTML = test.innerHTML;
  11.     alert(result.innerHTML)
  12. })();
  13. </script>
复制代码

结果会发现,在 IE6、IE7 浏览器中第二次弹出的 result.innerHTML 中的 A 元素的 href 值成为了绝对路径。

其实先人们早遇到这些问题(感谢 玉伯 提供的资料):

在上面的文章中已提及了处理方案,就是在 IE 下使用 getAttribute( ‘href’ , 2 ) 方法。 Microsoft 给此方法扩展了第二个参数,可设置为 0、1、2,如果设置为 2 ,则返回属性原始值。

脚本修正为:

  1. (function(){
  2.     var test = document.getElementById('test');
  3.     alert(test.innerHTML);

  4.     var result =  document.getElementById('result');
  5.     result.innerHTML = test.innerHTML;

  6.     if(/*@cc_on!@*/0 ) { //if ie
  7.         var links1 = test.getElementsByTagName('a');
  8.         var links2 = result.getElementsByTagName('a');
  9.         for(var i = 0, len = links1.length; i < len; ++i ) {
  10.             links2[i].href = links1[i].getAttribute('href', 2);
  11.         }
  12.     }

  13.     alert(result.innerHTML);

  14. })();
复制代码

在寻找此问题的过程中还搜索到 Hedger Wang 发现的一个有趣的 BUG 问题:在 IE 中当重新设置新的 href 属性值时,如果链接文字含有 “http://” 或 “@” ,则其 innerHTML 将显示不正确,显示成设置的 href 属性。

解决方法(sHref 为要设置的 href 新值):

  1. sHref = 'http://www.hedgerwow.com';
  2. var isMSIE = /*@cc_on!@*/false;
  3. if( isMSIE ){
  4.     sHref = ' ' + sHref; //add extra space before the new href
  5. };
复制代码


发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 需要先绑定手机号

关闭

站长推荐上一条 /1 下一条

QQ|侵权投诉|广告报价|手机版|小黑屋|西部数码代理|飘仙建站论坛 ( 豫ICP备2022021143号-1 )

GMT+8, 2024-11-22 13:12 , Processed in 0.042337 second(s), 8 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表