相关疑难解决方法(0)

JavaScript:XMLSerializer.serializeToString()的替换?

我正在使用Seam框架和RichFaces AJAX库开发一个网站(这些对于手头的问题并不是那么重要 - 只是一些背景).

我似乎在RichFaces中发现了一个错误,在某些情况下,它会导致基于AJAX的更新在IE8中失败(有关详细信息,请参阅此处:http://community.jboss.org/message/585737).

以下是发生异常的代码:

   var anchor = oldnode.parentNode;

   if(!window.opera 
       && !A4J.AJAX.isWebkitBreakingAmps() 
       && oldnode.outerHTML 
       && !oldnode.tagName.match( /(tbody|thead|tfoot|tr|th|td)/i ) ) {
         LOG.debug("Replace content of node by outerHTML()");
         if (!Sarissa._SARISSA_IS_IE || oldnode.tagName.toLowerCase()!="table") {
         try {
           oldnode.innerHTML = "";
         } catch(e){    
           LOG.error("Error to clear node content by innerHTML "+e.message);
           Sarissa.clearChildNodes(oldnode);
         }
       }
           oldnode.outerHTML = new XMLSerializer().serializeToString(newnode);
   }
Run Code Online (Sandbox Code Playgroud)

最后一行(使用XMLSerializer的那一行)是IE中发生异常的地方.我想知道是否有人知道我可以在那里使用的任何替换方法/库/等(仅在IE上很好).谢谢.

编辑:经过一些进一步的研究后,似乎异常不是由XMLSerializer未定义引起的,而是当我尝试将XMLSerializer的输出分配给oldnode的outerHTML属性时.

这很奇怪,因为它大部分时间都有效,但仅在几个场景中失败(这个框架似乎相当重要).

任何人都可以想到什么时候XMLSerializer的输出(从调试器显示的内容看起来是非常有效的HTML)对于元素的outerHTML属性不可分配的

最奇怪的是,如果我要克隆元素(使用cloneNode(true))然后设置outerHTML,它似乎工作.

javascript internet-explorer

12
推荐指数
2
解决办法
2万
查看次数

标签 统计

internet-explorer ×1

javascript ×1