2

问题

是否有可能通过HTTP headerhtml代码告诉浏览器发生时该怎么做XML Parsing Error?比如可能X-OnXmlParsingError<meta name="onXmlParsingError" href="http://example.com"/>等等。

附加信息

更多信息:我生成带有标题XHTML的代码发送到浏览器。application/xhtml+xml因此,当我的xhtml代码出现问题时,会显示浏览器而不是我漂亮的网页XML Parsing Error——这是预期的行为。但是我想更改它,并告诉每个浏览器在发生此错误时该怎么做。例如,重定向到带有一些友好消息的格式错误的自定义页面。

我知道我可以解析服务器端的输出代码,但我不想要这个。它的效率非常低,并且格式错误的代码的概率几乎是 0,但仍然如此。

浏览器

歌剧

隐藏问题

(...) 我们决定停止抛出严厉的 XML 解析失败错误消息,而是尝试将文档自动重新解析为 HTML。它不再在浏览器中显示错误消息,而是转储到控制台,因此作为开发人员,如果您愿意,您仍然可以在 Opera Dragonfly 和错误控制台中找到 XML 解析错误警告。

火狐

生成

<parserror>(...)</parseerror>

而不是 normal html,所以很容易通过document.documentElement === 'html'.

服务器端解决方法

除了问题要求之外,我发现的最快(1 秒内 2500 次检查,T4200 @ 2.00Ghz)PHP验证器是:

<?php
// returns 1 on success and 0 on failure
xml_parse(xml_parser_create(), $stringWithHtmlCode) == 1

我强烈建议阅读已接受答案下的评论。

4

1 回答 1

1

为什么不通过 XMLHttpRequest(或早期的 IE 回退)检索 XHTML,并检查您请求 xmlhttp.resposeXML 的能力。如果这样做会引发异常或返回 null,请重定向到您的错误页面。否则,使用 window.onload = function() { document.write(xmlhttp.responseText); 重写文档 };

于 2013-08-19T01:12:27.230 回答