为什么我看不到HTML 5 <dialog>?

Kor*_*gay 3 jsf html5 facelets

这是我的Facelets文件:

<!DOCTYPE html>
<html lang="en"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:h="http://java.sun.com/jsf/html">

<h:head>
    <title>Simple JSF Facelets page</title>
</h:head>

<h:body>
    Place your content here!
    <dialog>
        <dt>Sam</dt>
        <dd>Knock, Knock.</dd>
        <dt>Eric</dt>
        <dd>Who's there?</dd>
        <dt>Sam</dt>
        <dd>Justin.</dd>
        <dt>Eric</dt>
        <dd>Justin who?</dd>
        <dt>Sam</dt>
        <dd>Justin time for dinner!</dd>
    </dialog>
</h:body>
</html>
Run Code Online (Sandbox Code Playgroud)

我在浏览器中看到的只是

将您的内容放在这里!

当我检查此文件的来源时,我在chrome中看到:

<!DOCTYPE html>
<html lang="en"><head>
    <title>Simple JSF Facelets page</title></head><body>
Place your content here!
<dialog>
    <dt>Sam</dt>
    <dd>Knock, Knock.</dd>
    <dt>Eric</dt>
    <dd>Who's there?</dd>
    <dt>Sam</dt>
    <dd>Justin.</dd>
    <dt>Eric</dt>
    <dd>Justin who?</dd>
    <dt>Sam</dt>
    <dd>Justin time for dinner!</dd>
</dialog>
<ul id="javax_faces_developmentstage_messages" title="Project Stage[Development]: Unhandled Messages"></ul></body>
</html>
Run Code Online (Sandbox Code Playgroud)

那么,从源代码来看,它看起来应该是一个有效的html5文件?但是目前,我看不到对话框标签中的内容?

Tim*_*mes 9

我之前从未使用过该dialog标签,但在检查Chrome内置的DOM和样式后,似乎默认情况下该元素设置为display: none;

dialog:not([open]){ display: none; }
Run Code Online (Sandbox Code Playgroud)

因此,要在您的页面上显示此内容,您需要设置样式;

dialog{ display: block; }
Run Code Online (Sandbox Code Playgroud)

更新

此外,您可以opendialog元素上使用该属性

<dialog open>....</dialog>
Run Code Online (Sandbox Code Playgroud)

  • 对话框元素记录在http://www.w3.org/html/wg/drafts/html/master/interactive-elements.html#the-dialog-element中 (2认同)