kam*_*cus 12 xml jquery parsing dom
我不想做的事:
我想做什么:
我会没事的:
它只是不起作用,我觉得这是不可能的100%跨浏览器方式使用普通的旧jQuery方法.
例证:
<!DOCTYPE html>
<html>
<head>
<title>IE Sucks</title>
<script src="Scripts/jquery-1.5.min.js" type="text/javascript"></script>
<script type="text/javascript">
var xml =
'<Browsers>' +
'<CoolBrowsers>' +
'<Browser name="Opera"></Browser>' +
'<Browser name="Chrome"></Browser>' +
'<Browser name="Firefox"></Browser>' +
'</CoolBrowsers>' +
'<BadBrowsers>' +
'<Browser name="IE6"></Browser>' +
'</BadBrowsers>' +
'</Browsers>';
$(function () {
$("#xml").text(xml);
var uncoolBrowser = $("<Browser />").attr("name", "IE7");
// In 1.5, using this...
var $xml = $($.parseXML(xml));
// Nope. Works everywhere else, though!
// var $xml = $(xml);
// Throws a "Type mismatch"
// Works everywhere except IE
// This is case sensitive (??? WTF ???)
// Lowercase "badbrowsers" nothing happens
// Uppercase "BADBROWSERS" nothing happens
// Best part? $xml.find("BadBrowsers").length === 1
$xml.find("BadBrowsers").append(uncoolBrowser);
// Only way to output XML in IE
$("#result").text($xml[0].xml);
// Fuggetaboutit
// Technically, it does work in IE but not when using $.parseXML()
// $("#result").text($("<div></div>").append($xml.clone()).html());
});
</script>
</head>
<body>
<pre id="xml"></pre>
<pre id="result"></pre>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
可能吗?这个简单的场景可以完成,还是IE只是抛弃了我们所有人?$(xml).everything
等,适用于FF,Opera,Chrome和Safari.
更新
有可能使用巫毒魔法.
我创建了一个jQuery插件,负责协调不同浏览器处理XML之间的差异.我还在.xml()
其他地方基于类似的代码创建了一个函数,虽然我修复了一个仅限IE的问题.这适用于所有浏览器,IE7和IE8肯定,无法测试IE6.
我已经在我的github上发布了这个.如果有人有任何建议或改进,请告诉我.我已经碰到了几件事,但是当我遇到它们时,我一直在修理它们.
这更多的是猜测,因为我不知道 .parseXml 的作用,但 IE 需要createElement
未知的节点名称。你能尝试一下document.createElement('BadBrowsers')
你要操作的每个新节点吗?
HTML5 就是这种情况,这就是为什么有 shiv 脚本。你可以尝试只采取这个:
http://html5shiv.googlecode.com/svn/trunk/html5.js
复制它,将新节点名称附加到var z
,然后:
<!--[if lt IE 9]>
<script src="file.js"></script>
<![endif]-->
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1523 次 |
最近记录: |