我正在使用使用自定义标签的发布系统。这些在服务器上解释。问题是,当在本地查看时,它们会导致Opera出现大问题(不会解释自定义标记)。
Opera正在以不同于其他浏览器的方式处理这些标记。看起来它正在关闭文档末尾的标记(即使标记包含结束斜杠)。我只是想知道,如果这种行为被认为是错误或功能。
另外,如果你有任何想法如何破解这样的代码,以便我可以在本地调试Opera + HTML + CSS(没有解释自定义标签),请告诉我。谢谢。
尝试使用以下代码查看操作代码(live example):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Non-standard tag behavior in Opera</title>
<style type="text/css" media="all">
div { background: yellow; padding: 1em; }
nonstandardtag { border: 1px solid red; }
</style>
</head>
<body>
<div>
<nonstandardtag>content of non-standard tag</nonstandardtag>
main tag content
</div>
<div>
<nonstandardtag />
main tag content
</div>
</body>
</html>
答案 0 :(得分:2)
我使用歌剧超过5年。浏览器最接近标准。大多数在Opera中看起来很糟糕的网站都是针对IE进行“优化”的。
但一个显而易见的问题是,为什么需要使用非标准标签?您可以将div和span标签用于几乎所有非标准解决方案。
答案 1 :(得分:2)
简短:这不是一个错误。尽管有DOCTYPE,your page is not interpreted as XHTML(这是intentional)。
HTML不像XML那样支持自动关闭标记语法。
在HTML中,实际上<foo />
与<foo>
或<foo /="">
相同。从理论上讲,它与<foo></foo>>
相同。
您需要告诉浏览器将页面解释为X [HT] ML。 DOCTYPE是不够的。要在本地执行此操作,文件必须具有.xml
或.xhtml
扩展名。当您通过HTTP提供文件时,必须将Content-Type
标头设置为application/xhtml+xml
或类似的XML类型(对于静态文件,通常.xhtml
文件扩展名完成此任务)。
您的实际示例是text/html
,因此它不会被解释为XHTML,并且无法按预期工作。
答案 2 :(得分:1)
这似乎在Opera 10中得到修复。所以我想这不是一个功能。
答案 3 :(得分:0)
一,您不需要非标准元素。第二,无论你使用doctype声明什么,这都不是XHTML而是HTML(正如你在<meta http-equiv="Content-Type" content="text/html…
中所说的那样。这显然意味着浏览器使用他们的 HTML 解析器,而那些不是t(并且不应该)支持XML的空元素的简写语法<element/>
。
答案 4 :(得分:0)
简短回答:如果您输入格式错误的数据,则无法保证或要求用户代理可以执行的操作。