JavaScript: Замена for 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);
   }

В последней строке (с XMLSerializer) в IE возникает исключение. Мне было интересно, знает ли кто-нибудь о каком-либо методе / библиотеке / и т.д. замены, который я мог бы использовать там (только в IE в порядке). Спасибо.

РЕДАКТИРОВАТЬ: После некоторых дополнительных исследований выяснилось, что исключение вызвано не тем, что XMLSerializer не определен, а скорее, когда я пытаюсь назначить вывод XMLSerializer свойству externalHTML старого узла .

Это странно, потому что это работает в большинстве случаев, но дает сбой только в паре сценариев (эта часть структуры кажется довольно важной).

Может ли кто-нибудь придумать причину, по которой вывод XMLSerializer (который, судя по тому, что показывает отладчик, выглядит вполне допустимым HTML) не может быть назначен свойству externalHTML элемента ?

Самое странное, что если бы я клонировал элемент (используя cloneNode (true) ), а затем установил внешний HTML, это, похоже, сработало.

12
задан Rob Kielty 9 April 2014 в 13:10
поделиться