Opera中的非标准标记行为

时间:2009-01-15 10:32:46

标签: html tags opera

我正在使用使用自定义标签的发布系统。这些在服务器上解释。问题是,当在本地查看时,它们会导致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>

5 个答案:

答案 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>&gt;相同。

您需要告诉浏览器将页面解释为X [HT] ML。 DOCTYPE是不够的。要在本地执行此操作,文件必须具有.xml.xhtml扩展名。当您通过HTTP提供文件时,必须Content-Type标头设置为application/xhtml+xml或类似的XML类型(对于静态文件,通常.xhtml文件扩展名完成此任务)。

您的实际示例是text/html,因此它不会被解释为XHTML,并且无法按预期工作。

BTW:XHTML不允许使用非标准元素。 如果你想要添加自己的元素,至少应该使用自己的命名空间。

答案 2 :(得分:1)

这似乎在Opera 10中得到修复。所以我想这不是一个功能。

答案 3 :(得分:0)

一,您不需要非标准元素。第二,无论你使用doctype声明什么,这都不是XHTML而是HTML(正如你在<meta http-equiv="Content-Type" content="text/html中所说的那样。这显然意味着浏览器使用他们的 HTML 解析器,而那些不是t(并且不应该)支持XML的空元素的简写语法<element/>

答案 4 :(得分:0)

简短回答:如果您输入格式错误的数据,则无法保证或要求用户代理可以执行的操作。