Я занимаюсь разработкой веб-сайта с использованием фреймворка 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 свойство oldnode.
Это странно, поскольку оно работает в большинстве случаев, но не работает только в нескольких сценариях (является частью структуры, кажется, довольно важным).
Может кто-нибудь придумать какую-либо причину относительно того, когда вывод XMLSerializer (который, как показывает отладчик, выглядит вполне допустимым HTML) нельзя присвоить свойству externalHTML элемента ?
Самое странное, что если бы я клонировал элемент (используя cloneNode(true)
), а затем установил externalHTML, он, похоже, работает.