这是一个简单的回调,它是在从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;
}
这样做会有效,还是有一个适用于所有浏览器的代码序列?