今天研究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浏览器中,如IE6、IE7中较为常见。这一问题不仅会影响页面的正常显示,还可能导致JavaScript脚本中获取到错误的href属性值...
<link rel="stylesheet" type="text/css" href="ie9.css"> <![endif]--> <!--[if IE 10]> <link rel="stylesheet" type="text/css" href="ie10.css"> <![endif]--> ``` 4. **检测并修复CSS语法错误**:有时,...
1. **IE6的盒模型问题**:IE6在处理CSS盒模型时存在bug,导致元素的宽度计算出现问题。 2. **IE7的浮动元素错位**:在IE7中,当元素设置为`float`时,可能会出现与其他元素错位的现象。 3. **IE8的渲染模式选择**:...
### 常见CSS Bug详解 #### CSS兼容性问题概览 在开发网站时,确保网页能在各种浏览器中正常显示是非常重要的。不同的浏览器对CSS的支持程度各不相同,特别是早期的Internet Explorer(IE)版本与现代浏览器如Fire...
如果计算机中存在旧版本的`COMCTL32.DLL`或者存在已知的BUG版本,则需要替换为正确的版本,并重新注册该文件。 - 首先,尝试从`C:\Windows\System32\`目录下查找是否存在`COMCTL32.DLL`文件。 - 如果发现文件版本不...
<link type="text/css" rel="stylesheet" href="css/ie6.css" /> <![endif]--> ``` 以上代码表示当浏览器为IE6或更低版本时,加载`css/ie6.css`文件作为额外的样式表来解决特定于IE6的样式问题。这是一种非常实用的...
在说明部分,文章强调了使用特定属性消除BUG时的注意事项,建议开发者不要轻易改变display属性,并且举例说明了属性值书写上的细微差别(比如颜色值的全写和简写形式),可能对IE6中BUG的影响。 最后,文章提供了一...
本文主要讨论了一个与IE7和IE8浏览器相关的CSS下载问题,该问题会导致CSS文件被下载两次,从而增加页面加载时间。这个问题源于在HTML链接中省略HTTP或HTTPS协议头。 正常情况下,CSS加载代码应如下所示: ```html ...
<link rel="stylesheet" type="text/css" href="ie7.css" /> <![endif]--> ``` 同时,为了覆盖某些IE特有的解析规则,CSS Hack(即CSS中的特殊语法,用于区分不同的浏览器或浏览器版本)被广泛使用。比如,“\*”...
<link rel="stylesheet" type="text/css" href="ie6.css" /> <![endif]--> ``` 在这个例子中,`ie6.css`文件可以包含专门为IE6修复的CSS规则,包括修复`margin-left`的问题。 总的来说,`margin-left`在IE6下的...
在早期的Internet Explorer 6(简称IE6)浏览器中,存在一个著名的布局bug,这个问题主要涉及到`<select>`元素与`<div>`元素的层叠上下文(Z-index)处理。当一个`<div>`元素试图遮盖页面中的下拉列表框`<select>`时...
meta http-equiv="X-UA-Compatible" content="IE=edge"/> <title>创建组合</title> [removed][removed] [removed][removed] </head> <body <div class="chose2" ms-controller=...
- C) 属性选择器 (`a[href]`):IE6不支持,IE7和IE8支持。 - D) 临近兄弟选择器 (`h1+p`):IE6不支持,IE7和IE8支持。在IE7中,兄弟元素间有HTML注释时,此选择器可能失效。 - E) 普通兄弟选择器 (`h1~p`):IE6不...
ie6 中 li 插入图片后下方有空隙 bug,这是 ie6 的有一个经典 bug。解决该 bug 有很多方法,今天我整理了下,共4种方法,给大家分享下。 首先附上代码: 复制代码代码如下: <!DOCTYPE HTML> <html lang=”en-...
本文将探讨一个关于IE中CSS应用的奇怪bug,主要关注如何在不同情况下应用样式,并解析IE浏览器中的样式优先级规则。 首先,我们了解CSS样式应用的三种主要方式: 1. **外部样式(External Style Sheet)**:适用...
在IE6中,如果`innerHTML`的HTML字符串中包含了一个`<a>`标签,并且该`<a>`标签具有`href`属性,那么在解析过程中,浏览器可能错误地将焦点转移至`<a>`标签,从而阻止`iframe`的加载。这可能导致`iframe`的`src`属性...