Привет всем!
Такая задача:
- Работаем только с XHTML, например, в Firefox.
- Необходимо вставить HTML-код, например, полученный через AJAX, внутрь какого-либо тега.
- Есть вероятность, что полученный код может оказаться некорректным - соответственно в этом случае выдаем сообщение об ошибке, некорректный код пропускаем и продолжаем работу дальше.
Для решения поставленной задачи я пробовал использовать вставку через
innerHTML и перехват ошибок, через
try{ ... } catch (e) { ... }. Проблемой оказалось то, что после возникновения хоть одной ошибки дальнейшая работа скрипта становится невозможной. Exception выдается даже на корректный код, вставленный совершенно в иной тэг.
Код:
|
Component returned failure code: 0x80004003 (NS_ERROR_INVALID_POINTER) [nsIDOMNSHTMLElement.innerHTML] |
Чтобы было понятнее, вот пример тестового кода (запускать его надо обязательно только в режиме xhtml):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head><title>Test</title></head>
<body>
<p id="test"></p>
<script type="text/javascript">
<!--//--><![CDATA[//><!--
var d = document.createElement("div");
var x = document.getElementById("test");
try {
d.innerHTML = "Try to insert <" + "b>incorrect<" + "b> HTML-code";
alert("ok!")
} catch (e) {
alert(e.name + ": " + e.message);
}
try {
x.innerHTML = "Try to insert <" + "b>correct</" + "b> HTML-code";
alert("ok!")
} catch (e) {
alert(e.name + ": " + e.message);
}
//--><!]]>
</script>
</body></html>
Насколько я понимаю, здесь после ошибки где-то выставляется флаг, который необходимо потом сбросить. Где и какой? Я перерыл сегодня горы документации - найти не могу...