【问题标题】:XMLSerializer in IE9 compatability mode not workingIE9 兼容模式下的 XMLSerializer 不起作用
【发布时间】:2014-11-07 05:05:18
【问题描述】:

我有这个代码:

.... 
    jQuery(document).ready(function() {
        function showResponse(responseText, statusText, xhr, $form)  {
            var myxml = responseText;
            var serializer = new XMLSerializer(); 
            var xmltostring = serializer.serializeToString(myxml);

当 IE9 处于兼容模式时,它在除 IE9 之外的所有浏览器中都能正常工作。由于我们不会进入客户端需要以兼容模式运行 IE9 的原因,所以我正在尝试寻找解决方案。

报错是:

'XMLSerializer' is undefined 

有人知道解决这个问题的方法吗?有没有另一种方法可以像 XMLSerializer 那样将 DOM 文档/对象转换为文本?

谢谢。

【问题讨论】:

    标签: javascript jquery internet-explorer dom xmlserializer


    【解决方案1】:

    由于兼容模式可以模拟 IE8 和向下的行为,因此它不起作用。 XMLSerializer 适用于 IE9 及更高版本(标准模式)。将 DOM 对象转换为字符串的另一种方法是使用outerHTML

    示例 DOM:

    var div = document.createElement('div');
    div.innerHTML = '<p>testing 123</p>';
    

    获取字符串表示:

    div.outerHTML
    //=> "<div><p>testing 123</p></div>"
    

    【讨论】:

    • 对不起,我在这方面的知识很粗略,详细说明:所以我已经得到了:var myxml = responseText;我可以说: var xmltostring = myxml.outerHTML;那会给出一个字符串吗?我试过了,但似乎没有用。
    • 如果responseText 已经是一个字符串,它应该是,那么你很高兴。不知道你为什么要用它做其他事情。
    • 我不认为它是一个字符串,它似乎是一个对象
    【解决方案2】:

    最终做了这样的事情,似乎完成了工作:

    var xmltostring='';
    
    if (typeof window.XMLSerializer !== 'undefined') {
        var serializer = new XMLSerializer(); 
        xmltostring = serializer.serializeToString(myxml);
    } else {
        if(window.ActiveXObject){
            xmltostring = myxml.xml;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2012-09-07
      • 2017-02-12
      • 1970-01-01
      • 1970-01-01
      • 2011-02-23
      • 2012-08-24
      • 2013-09-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多