为什么 Safari 的 document.adoptNode() 在源文档处于 quirks 模式时将 css 类名转
Why does Safari's document.adoptNode() convert css class names to lowercase when source document is in quirks mode?
我正在使用XHR(XML Http Request)来加载html片段。我正在使用 responseType = "document" 为了将 html 解析卸载到浏览器。当 ajax 调用完成时,我正在使用 document.adoptNode() 在我的主文档中包含 ajax html 元素。
我注意到一个奇怪的错误,它只影响Safari(El Capitan和iOS 9.3.2上的v9.1.1)。似乎当 Safari 采用该节点时,它会将 css 类名转换为小写。有关完整演示,请参阅此jsfiddle:https://jsfiddle.net/theblueslate/wxo7zst5/2/
此错误不会在 Chrome v51 或 IE11 上发生。
来自 jsfiddle 的代码包含在此处:
function buildDataLoadedCallback (containerId, useAdopt) {
return function() {
var parsedDoc = this.response;
var parsedBodyChild = parsedDoc.body.children[0];
var newNode;
if (useAdopt) {
newNode = document.adoptNode(parsedBodyChild);
} else {
newNode = document.importNode(parsedBodyChild, true);
}
var container = document.getElementById(containerId);
container.appendChild(newNode);
}
}
function requestAjaxHtmlFragment(pageName, callback) {
var xhr = new XMLHttpRequest();
xhr.responseType = "document";
xhr.addEventListener("load", callback);
/* this fragment.html file simply contains:
<div class="myClass">
<p>MyClass</p>
</div>
*/
xhr.open("GET","https://dl.dropboxusercontent.com/u/15211879/js-fiddle/" + pageName + ".html", /*async:*/true);
xhr.send();
}
var pageName = "fragment";
requestAjaxHtmlFragment(pageName, buildDataLoadedCallback(pageName + "-adopt-container", true));
是否有我缺少的明显错误?我无法发现它,并且我提出了一个webkit错误:https://bugs.webkit.org/show_bug.cgi?id=159555,但我希望我错了。
原来这是一个错误。现已在 WebKit 中修复:https://bugs.webkit.org/show_bug.cgi?id=159555
我认为将其发布到 SO 仍然很有用。发帖增加了像我一样在这个问题上苦苦挣扎的任何其他人的知名度。
相关文章:
- Javascript,访问一个主要对象模块模式中的每个对象
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- 试图在引导模式内动态生成图表,得到offsetWidth错误
- 同位素库错误:未捕获错误无布局模式包装生产线8
- 在DOM中查找一个模式并替换它's的内容使用jquery
- 如何缩短MongoDB ObjectId并在Mongoose模式中使用它
- D3.js模式不适用于弧形或圆环图
- Webdriver.io pageObject模式-通过传递参数来定义元素选择器
- 模块模式和这个
- 带有let的JS/EECMAScript6私有字段的模式
- 我是否可以检测到javascript正在被卸载(作为调试模式)
- 谷歌地图API v3.19在Internet Explorer Quirks模式下损坏
- AngularJS在IE9 Quirks模式下未加载
- jQuery's:隐藏选择器在IE9 Quirks模式下不工作
- 当ie以quirks模式访问时禁用站点
- IE9分配与IE Quirks模式不同的值
- 文档.querySelector对于标准模式iframe在quirks模式父模式下运行是未定义的
- IE7 Quirks模式下jQuery Ui对话框的替代方案
- 为什么 Safari 的 document.adoptNode() 在源文档处于 quirks 模式时将 css 类名转
- 在Internet Explorer中以Quirks模式加载页面 - 文档类型已注释掉