IE可以使用jQuery操作XML吗?

前端之家收集整理的这篇文章主要介绍了IE可以使用jQuery操作XML吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我不想做什么:

>只需使用jQuery“IE”读取XML.去过也做过.大部分工作.
>通过AJAX加载XML.这是一个传统的系统,在回发之间的隐藏字段(哦yah,宝贝!)中使用XML来存储向导数据结构.重写它会吸.

我想做什么:

>在IE中使用jQuery处理XML文档
>在所有浏览器中使用相同的代码,使用本机jQuery功能

我会没事的:

>覆盖/重载相同的jquery方法,使其在操作XML DOM时在IE中工作.

它只是不起作用,我觉得只是不可能以100%的跨浏览器方式使用简单的旧的jQuery方法.

例如:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>IE Sucks</title>
  5. <script src="Scripts/jquery-1.5.min.js" type="text/javascript"></script>
  6. <script type="text/javascript">
  7. var xml =
  8. '<Browsers>' +
  9. '<CoolBrowsers>' +
  10. '<Browser name="Opera"></Browser>' +
  11. '<Browser name="Chrome"></Browser>' +
  12. '<Browser name="Firefox"></Browser>' +
  13. '</CoolBrowsers>' +
  14. '<BadBrowsers>' +
  15. '<Browser name="IE6"></Browser>' +
  16. '</BadBrowsers>' +
  17. '</Browsers>';
  18.  
  19. $(function () {
  20.  
  21. $("#xml").text(xml);
  22.  
  23. var uncoolBrowser = $("<Browser />").attr("name","IE7");
  24.  
  25. // In 1.5,using this...
  26. var $xml = $($.parseXML(xml));
  27.  
  28. // Nope. Works everywhere else,though!
  29. // var $xml = $(xml);
  30.  
  31.  
  32. // Throws a "Type mismatch"
  33. // Works everywhere except IE
  34. // This is case sensitive (??? WTF ???)
  35. // Lowercase "badbrowsers" nothing happens
  36. // Uppercase "BADBROWSERS" nothing happens
  37. // Best part? $xml.find("BadBrowsers").length === 1
  38. $xml.find("BadBrowsers").append(uncoolBrowser);
  39.  
  40. // Only way to output XML in IE
  41. $("#result").text($xml[0].xml);
  42.  
  43. // Fuggetaboutit
  44. // Technically,it does work in IE but not when using $.parseXML()
  45. // $("#result").text($("<div></div>").append($xml.clone()).html());
  46. });
  47. </script>
  48. </head>
  49. <body>
  50. <pre id="xml"></pre>
  51. <pre id="result"></pre>
  52. </body>
  53. </html>

可能吗?这个简单的情景可以做到吗? $(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,然后:

  1. <!--[if lt IE 9]>
  2. <script src="file.js"></script>
  3. <![endif]-->

猜你在找的jQuery相关文章