在jQuery成功回调中解析XHTML在IE中不起作用

时间:2011-05-06 14:33:08

标签: javascript jquery internet-explorer

这是一个简单的回调,它是在从Ajax成功返回时处理的

   Entropy . eBookHandler . fetchPageHandler = function ( data, status, request ) 
    { var container = jQuery ( this ); 
      var xhtml = jQuery ( data );
      var body = xhtml . find ( "body" );
      var div = body . children ( "div" );
      var clone = div . clone ( true );
      var content = container . children ( );
      if ( 0 < content . length )
       content . replaceWith ( clone );
      else
       container . prepend ( clone );

      Entropy . eBookHandler . bindContentHandlers ( );
    };

执行以下jQuery .ajax方法后调用此方法:

    jQuery . ajax 
        ( { context: container, type: 'GET',  url: page, 
            dataType: 'xml', async: true, cache: false, 
            timeout: 10000, 
            success: Entropy. eBookHandler.fetchPageHandler,
            error: Entropy.eBookHandler.ajaxErrorHandler 
        } ); 

除了要求XHTML片段未加载到“主机”DOM的IE系列之外,所有浏览器都能很好地工作。需要克隆方法,因为本地DOM和作为xhtml加载的是当然不同。

很明显,IE的行为与其他浏览器的行为不同,我们如何解决这个问题呢? (返回的XHTML内容在W3C验证为XHTML 1.0 Exact)

我找到了一个建议,即通过添加以下括号来单独处理IE:

if( jQuery.browser.msie)
{ var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
  xmlDoc.loadXML(data);
  xhtml = xmlDoc;
}

这样做会有效,还是有一个适用于所有浏览器的代码序列?

0 个答案:

没有答案