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

时间:2013-03-18 22:01:29

标签: html5 jsf 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>

我在浏览器中看到的只是

  

将您的内容放在这里!

当我检查此文件的来源时,我会看到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>

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

2 个答案:

答案 0 :(得分:9)

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

dialog:not([open]){ display: none; }

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

dialog{ display: block; }

<强>更新

此外,您可以使用open元素

上的dialog属性
<dialog open>....</dialog>

答案 1 :(得分:2)

使用open元素

上的dialog属性
<dialog open>....</dialog>

默认情况下,该元素设置为display: none;

dialog:not([open]){ display: none; }

另请注意,此功能目前并非在所有浏览器中都可用。例如。在Chrome中,它需要启用chrome:// flags / #enable-experimental-web-platform-features。

(这是Tim B James回答的经过大量编辑的版本)。