`
ywxowen999
  • 浏览: 23638 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
社区版块
存档分类
最新评论

IE的href 设值BUG

阅读更多
今天研究KISSY1.3 RC源代码时看到这样一段代码,如下:
    if (IE_VERSION && IE_VERSION < 9) {
        // https://github.com/kissyteam/kissy/issues/198
        // http://social.msdn.microsoft.com/Forums/en-US/iewebdevelopment/thread/aa6bf9a5-0c0b-4a02-a115-c5b85783ca8c
// http://gabriel.nagmay.com/2008/11/javascript-href-bug-in-ie/
        // https://groups.google.com/group/jquery-dev/browse_thread/thread/22029e221fe635c6?pli=1
        var hrefFix = attrHooks[HREF] = attrHooks[HREF] || {};
        hrefFix.set = function (el, val, name) {
            var childNodes = el.childNodes,
                b,
                len = childNodes.length,
                allText = len > 0;

            for (len = len - 1; len >= 0; len--) {
                if (childNodes[len].nodeType != NodeType.TEXT_NODE) {
                    allText = 0;
                }
            }

            if (allText) {
                b = el.ownerDocument.createElement('b');
                b.style.display = 'none';
                el.appendChild(b);
            }

            el.setAttribute(name, EMPTY + val);

            if (b) {
                el.removeChild(b);
            }
        };
    }

代码的作用是解决一个IE6,7,8版本的bug。
可以通过下面的例子发现问题
	<body>
		<a href='#' id='a'>www.aa</a>
	</body>
	<script type="text/javascript">
	       document.getElementById("a").href='http://docs.kissyui.com';
	</script>

在IE下执行这段的代码会发现
<a href='#' id='a'>www.aa</a>
被改成
<a href='http://docs.kissyui.com' id='a'>http://docs.kissyui.com</a>
a标签的text也被替换掉了。经过测试发现,一般text的值中有.和@等字符会被错误替换。
当a标签内嵌套有其他标签时则不会出现这种问题。

KISSY的实现就是利用了当a标签内有嵌套其他标签则不会出现BUG的特性。
分享到:
评论

相关推荐

    IE下href 的 BUG问题

    IE浏览器中href属性存在BUG问题是前端开发中遇到的一个典型兼容性问题,尤其在较老版本的IE浏览器中,如IE6、IE7中较为常见。这一问题不仅会影响页面的正常显示,还可能导致JavaScript脚本中获取到错误的href属性值...

    解决ie9、ie10本地css加载不上的解决方法实例

    &lt;link rel="stylesheet" type="text/css" href="ie9.css"&gt; &lt;![endif]--&gt; &lt;!--[if IE 10]&gt; &lt;link rel="stylesheet" type="text/css" href="ie10.css"&gt; &lt;![endif]--&gt; ``` 4. **检测并修复CSS语法错误**:有时,...

    div错位解决IE6IE7IE8样式不兼容问题

    1. **IE6的盒模型问题**:IE6在处理CSS盒模型时存在bug,导致元素的宽度计算出现问题。 2. **IE7的浮动元素错位**:在IE7中,当元素设置为`float`时,可能会出现与其他元素错位的现象。 3. **IE8的渲染模式选择**:...

    常见css BUG

    ### 常见CSS Bug详解 #### CSS兼容性问题概览 在开发网站时,确保网页能在各种浏览器中正常显示是非常重要的。不同的浏览器对CSS的支持程度各不相同,特别是早期的Internet Explorer(IE)版本与现代浏览器如Fire...

    ie8弹出窗体

    如果计算机中存在旧版本的`COMCTL32.DLL`或者存在已知的BUG版本,则需要替换为正确的版本,并重新注册该文件。 - 首先,尝试从`C:\Windows\System32\`目录下查找是否存在`COMCTL32.DLL`文件。 - 如果发现文件版本不...

    ie兼容问题

    &lt;link type="text/css" rel="stylesheet" href="css/ie6.css" /&gt; &lt;![endif]--&gt; ``` 以上代码表示当浏览器为IE6或更低版本时,加载`css/ie6.css`文件作为额外的样式表来解决特定于IE6的样式问题。这是一种非常实用的...

    IE中伪类hover的使用及BUG

    在说明部分,文章强调了使用特定属性消除BUG时的注意事项,建议开发者不要轻易改变display属性,并且举例说明了属性值书写上的细微差别(比如颜色值的全写和简写形式),可能对IE6中BUG的影响。 最后,文章提供了一...

    IE7,IE8 BUG导致CSS下载二次的解决方法

    本文主要讨论了一个与IE7和IE8浏览器相关的CSS下载问题,该问题会导致CSS文件被下载两次,从而增加页面加载时间。这个问题源于在HTML链接中省略HTTP或HTTPS协议头。 正常情况下,CSS加载代码应如下所示: ```html ...

    css+div 在IE中兼容

    &lt;link rel="stylesheet" type="text/css" href="ie7.css" /&gt; &lt;![endif]--&gt; ``` 同时,为了覆盖某些IE特有的解析规则,CSS Hack(即CSS中的特殊语法,用于区分不同的浏览器或浏览器版本)被广泛使用。比如,“\*”...

    css margin-left在IE6下的问题的解决方法

    &lt;link rel="stylesheet" type="text/css" href="ie6.css" /&gt; &lt;![endif]--&gt; ``` 在这个例子中,`ie6.css`文件可以包含专门为IE6修复的CSS规则,包括修复`margin-left`的问题。 总的来说,`margin-left`在IE6下的...

    ie6 select无法被div遮盖的bug解决方法

    在早期的Internet Explorer 6(简称IE6)浏览器中,存在一个著名的布局bug,这个问题主要涉及到`&lt;select&gt;`元素与`&lt;div&gt;`元素的层叠上下文(Z-index)处理。当一个`&lt;div&gt;`元素试图遮盖页面中的下拉列表框`&lt;select&gt;`时...

    bug解决思路.txt

    meta http-equiv="X-UA-Compatible" content="IE=edge"/&gt; &lt;title&gt;创建组合&lt;/title&gt; [removed][removed] [removed][removed] &lt;/head&gt; &lt;body &lt;div class="chose2" ms-controller=...

    CSS在Internet Explorer 6, 7 和8中的差别

    - C) 属性选择器 (`a[href]`):IE6不支持,IE7和IE8支持。 - D) 临近兄弟选择器 (`h1+p`):IE6不支持,IE7和IE8支持。在IE7中,兄弟元素间有HTML注释时,此选择器可能失效。 - E) 普通兄弟选择器 (`h1~p`):IE6不...

    ie6中li插入图片后下方有空隙(经典bug)多种解决方法

    ie6 中 li 插入图片后下方有空隙 bug,这是 ie6 的有一个经典 bug。解决该 bug 有很多方法,今天我整理了下,共4种方法,给大家分享下。 首先附上代码: 复制代码代码如下: &lt;!DOCTYPE HTML&gt; &lt;html lang=”en-...

    IE中奇怪的应用CSS的BUG分析

    本文将探讨一个关于IE中CSS应用的奇怪bug,主要关注如何在不同情况下应用样式,并解析IE浏览器中的样式优先级规则。 首先,我们了解CSS样式应用的三种主要方式: 1. **外部样式(External Style Sheet)**:适用...

    IE6 innerHTML写入的iframe src不显示BUG的解决方法

    在IE6中,如果`innerHTML`的HTML字符串中包含了一个`&lt;a&gt;`标签,并且该`&lt;a&gt;`标签具有`href`属性,那么在解析过程中,浏览器可能错误地将焦点转移至`&lt;a&gt;`标签,从而阻止`iframe`的加载。这可能导致`iframe`的`src`属性...

Global site tag (gtag.js) - Google Analytics