Может быть возможно перехват ошибок синтаксического анализа на клиенте, но это действительно решает неправильную проблему.
Я знаю, что это не то, что вы просили, но если вы не делаете что-то действительно специфичное для XHTML, например, встраиваете какой-то другой язык разметки, вы должны использовать свою страницу как text / html вместо application / xhtml + xml. Даже если это XHTML. Используя его как text / html, вы избежите проблемы, с которой столкнулись, и позволите вашей странице работать в IE. Обратите внимание, что именно тип MIME, а не объявление doctype определяет, какой синтаксический анализатор используется - использование переходного типа документа не сделает этого.
Тем не менее, если вы действительно уверены, что хотите, чтобы ваша страница анализировалась как XHTML, лучше обработать такого рода ошибки на сервере. Создайте свою страницу, создав DOM, а затем отправьте результат ее сериализации. Если это не вариант, начните с создания страницы, как вы делаете сейчас, но пока не передаете ее клиенту. Возьмите созданный вами XHTML и проанализируйте его на стороне сервера с проверяющим анализатором XHTML (или, по крайней мере, универсальным анализатором XML). Если вы получаете ошибки, отобразите любую страницу ошибок, которую вы хотите. В противном случае сериализуйте проанализированный DOM и отправьте его клиенту.
Итак, основные правила использования application / xhtml + xml:
- Не.
- (Для продвинутых пользователей) Нет, если только вы не доказали, что делаете что-то, что не будет работать, если страница обслуживается как text / html. Это относится к крошечной, крошечной доле процента документов XHTMl.
- Если вы должны использовать свою страницу как application / xhtml + xml, сгенерируйте ее с помощью какого-либо метода, который гарантирует достоверность.
- Если вы действительно не знаете, что делаете, никогда не используйте application / xhtml + xml для страницы, которая включает пользовательский ввод.
Помните, что XHTML - это просто переформулировка HTML 4 плюс возможность встраивания других языков. Если вы не используете встраивание, то у вас есть HTML 4 с другим, но почти полностью совместимым синтаксисом. Подавляющее большинство документов XHTML там представлены как text / html и, таким образом, обрабатываются браузерами как HTML 4.