我刚刚试着在Opera (10.50版)中查看我的网站http://www.logmytime.de/,它给了我一个"xml解析失败的错误“,并且拒绝显示网页。
我可以选择“将文档转换为HTML”,这样页面就能正常工作,但这很难解决我的问题。
奇怪的是,在设置HTML (而不是XTHML) doctype之后仍然会发生错误:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">我检查了浏览器的源输出,以确保我在Firebug中甚至查看了同一个网页时没有犯任何错误,它显示了一个内容类型的text/html;。
那么,为什么Opera仍然试图将我的网页解析为XML呢?
谢谢,
禤浩焯
编辑:只是为了澄清:我不是在问我网页上的错误是什么。我理解为什么这不是有效的XHTML。然而,我也在使用javascript微模板引擎,它的模板从来都不是有效的XML,这就是为什么我需要浏览器将我的整个网站解析为HTML,而不是XHTML。为了演示这一点,我刚刚在网页中插入了一个示例模板。
<script type="text/html" id="StopWatchTemplate" >
<h1><a href="#" onclick="TimeEntriesList.EditTimeEntry('<#=timeEntryID#>')"><#=currentlyRunning?"Aktueller":"Letzter"#> Stoppuhr-Zeiteintrag</a></h1>
<%-- Stoppuhr - Ende--%>
</script>在Opera中打开页面时,您可以看到模板现在会产生XML解析错误,即使页面的doctype仍然是HTML。
编辑2::为了让这一点更清楚:我不是在问为什么我的网页无效。我的问题是,为什么Opera试图将其解析为XHTML,尽管使用HTML文档类型。
Edit3::请不要发布更多的答案,我已经找到了原因,并在下面记录在案它。
发布于 2010-05-04 22:47:29
如果其他人有同样的问题:按照DeveloperArt的建议,可以在页面元素中使用一个简单的ContentType="text/html“属性来修复它。
编辑:这个问题实际上是由我在web项目中使用的mobile.Browser文件的错误引起的。以上的解决办法是可行的,但在我的情况下,这并不是必要的。有关更多详细信息,请参阅这个答案。
发布于 2010-05-04 15:51:45
发布于 2010-05-07 12:25:45
您得到了正确的答案(HTTP内容类型的标题强制执行XML解析),而且它似乎是固定的。我只想补充一个小小的提示,说明你如何从Opera内部找出问题所在。有两种可能的方式:
1)信息面板
默认情况下,这是不可见的,但是如果您打开左边的面板栏(如果没有看到,请按F4键切换),然后单击底部的小加号,您可以在菜单中启用"Info“。
信息面板显示当前打开的页面的一些分类信息,包括编码和MIME类型。
2)歌剧蜻蜓
按Ctrl-Shift-I打开开发工具(或浏览菜单到tools > Advanced > Opera Dragonfly)
转到“网络”选项卡,然后重新加载站点。您将看到请求,并可以查看标头。如果将此与Firebug的相应信息进行比较,您将看到内容类型标头的差异。(这里还将看到Opera发送一个包含"application/xhtml+xml“的”接受“标题。这意味着"Hi server,如果您的文件是真实的XHTML格式,我会理解的很好“。也许您的服务器端框架看到了这个标题,并且错误地使用了XHTML内容类型,即使内容无效?)
https://stackoverflow.com/questions/2766820
复制相似问题