gpt4 book ai didi

jquery - IE 可以使用 jQuery 操作 XML 吗?

转载 作者:数据小太阳 更新时间:2023-10-29 01:41:17 24 4
gpt4 key购买 nike

我不想做的事:

  • 使用 jQuery 在 IE 中简单地“读取”XML。去过也做过。大多数情况下都有效。
  • 通过 AJAX 加载 XML。这是一个遗留系统,在回发之间的隐藏字段(哦,是的,宝贝!)中使用 XML 来存储向导数据结构。重写它会很糟糕。

我正在尝试做的事情:

  • 在 IE 中使用 jQuery 操作 XML 文档
  • 使用 native jQuery 功能,在所有浏览器中使用相同的代码

我会接受的:

  • 覆盖/重载相同的 jquery 方法,使它们在操作 XML DOM 时在 IE 中工作。

它只是行不通,我觉得它不可能以 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>

这可能吗?这个简单的场景可以完成还是 IE 已经抛弃了我们所有人? $(xml).everything 等适用于 FF、Opera、Chrome 和 Safari。

更新

可以使用巫毒魔法。

我已经 created a jQuery plugin它负责协调不同浏览器处理 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]-->

关于jquery - IE 可以使用 jQuery 操作 XML 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5073953/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com