我有一个小测试用例了在:
http://jsfiddle.net/9xwUx/1/
代码归结为以下(给定的ID为“目标”的节点):
var string = '<div class="makeitpink">this should be pink, but is not</div>';
var parser = new DOMParser();
var domNode = parser.parseFromString(string,"text/xml");
document.getElementById("target").appendChild(domNode.firstChild);
如果您运行测试用例,然后检查通过萤火/ Chrome网上应用检查目标节点和选择的jsfiddle的iframe的body标签内的任何节点,并做“编辑为HTML”,任意位置添加一个随机charachter作为字符串[不是属性到れ,要清楚]和“保存”,将清新的风格。 但不是在这之前。 说我很困惑,是轻描淡写。
任何人都可以请澄清一下是怎么回事? 谢谢。
您可以更改MIME类型text/html
,并做到以下几点:
var parser = new DOMParser()
var doc = parser.parseFromString(markup, 'text/html')
return doc.body.firstChild
我没有测试每个浏览器,但它适用于Chrome和Firefox。 我看不出有任何理由它不会在其他地方工作。
有点晚了,但原因是你使用这些解析text/xml
选项,这意味着结果是XML节点,不对其应用CSS。 当您右键单击并转到“编辑为HTML”浏览器重新诠释了他们作为HTML和元素中的变化将导致重绘,重新应用CSS。
我一直在使用解析我的相对劈十岁上下,但绝对工作创建临时元素和操作innerHTML属性,使浏览器做了解析,而不是方法:
var temp = document.createElement("div")
//assuming you have some HTML partial called 'fragment'
temp.innerHTML = fragment
return temp.firstChild
你在你的jsfiddle已经注意到。 基本上它归结为输出DOMParser
是实例XMLDocument
当您使用text/xml
选项。