我不想做什么:
>只需使用jQuery“IE”读取XML.去过也做过.大部分工作.
>通过AJAX加载XML.这是一个传统的系统,在回发之间的隐藏字段(哦yah,宝贝!)中使用XML来存储向导数据结构.重写它会吸.
我想做什么:
>在IE中使用jQuery处理XML文档
>在所有浏览器中使用相同的代码,使用本机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>
可能吗?这个简单的情景可以做到吗? $(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]-->
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。