<!DOCTYPE>部分应如何在JSF中查看?HTML5或XHTML?

Val*_*lva 12 html browser jsf doctype jsf-2

这只是我现在的好奇心.在Eclipse中,这是在新的Facelet模板<head>上定义的部分,但是对于大多数模板来说是同样的事情:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets">
<head>
  ..
</head>
Run Code Online (Sandbox Code Playgroud)

我想在其上使用更清晰的代码,所以我改为:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets">
<head>
  ..
</head>
Run Code Online (Sandbox Code Playgroud)

它在开发中运行良好,但我想知道这种方法是否会在未来通过许多浏览器或设备(移动)提出任何问题.

Bal*_*usC 15

这是HTML5文档类型,它应该适用于所有浏览器,包括IE6.

官方指定JSF生成符合XHTML 1.0标记(此处和实现只有少数违规在JSF 2.2中修复和/或可由上下文参数管理).JSF可以设计不生成非XML sytnax(例如<br>代替<br/>),因此旧的HTML4 doctype与JSF生成的HTML输出完全兼容(即,当您尊重标准和/或担心W3验证器时 ;但是,大多数浏览器(如果不是所有浏览器都非常宽容).与旧的HTML4 doctype相反,HTML5 doctype允许XML语法,因此与XHTML doctypes兼容.因此,可以使用HTML5 doctype创建JSF页面.

doctype仅对webbrowser如何解释和呈现HTML标记非常重要(由JSF在您的特定情况下生成,但HTML不一定需要由JSF生成,因此浏览器的表示在技术上与JSF完全无关).特别是Microsoft IE在某些文档类型或完全缺乏doctype方面存在严重问题.在本页底部,您可以找到与某些文档类型相结合的浏览器行为的简明概述.有三种标准行为:

  • Q - Quirksmode.你真的不想拥有它.它触发IE 中的盒子模型错误.在CSS widthheight然后错误地覆盖paddingborder.
  • A - 几乎标准模式.经济实惠,只有表格单元的垂直尺寸不符合CSS2规范.如果你想避免表格单元格中神秘的图像间隙,这很有用.
  • S - 标准模式.浏览器尝试完全符合HTML/CSS标准.首选模式,因为它是唯一的模式,您可以更少或更确定您的网站在所有浏览器中看起来完全相同.

在您的特定情况下,随着从XHTML 1.0过渡文档类型到HTML5文档类型的更改,Firefox,Chrome,Safari和IE> = 8将从"A"变为"S".因此,如果您打算使用像素完美的设计,那么您一定要查看浏览器的网站演示文稿,了解表格单元格中的图像填充.

关于doctype在IE中的重要性,这里有一段HTML,它演示了IE6-9中由"Q"触发的盒子模型错误(请注意,这在IE10中不再显示):

<!DOCTYPE html>
<html lang="en">
    <head>
        <title>Remove DOCTYPE to trigger quirksmode</title>
        <style>
            #box { 
                background: yellow; 
                width: 100px;
                padding: 20px; 
                border: 20px solid black; 
                margin: 20px;
            }
        </style>
    </head>
    <body>
        <div id="box">box</div>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

Copy'n'paste'n'run它.有了<!DOCTYPE html>礼物,你会看到一个矩形.如果没有doctype行,您将看到一个真正的正方形(在IE10中,您需要在webdeveloper工具集中(按F12)将"浏览器模式"更改为例如IE9才能看到它).

在此输入图像描述

也可以看看: