簡體   English   中英

我可以在<TABLE>中包含<SCRIPT>標簽嗎?

[英]Can I have <SCRIPT> tag inside <TABLE>?

我必須在表中有一個標記,因為PHP在那里編寫了一個代碼,可以將東西添加到之前創建的Javascript數組中。 但是,我收到驗證錯誤(4.01嚴格)。

有什么方法可以做到這一點,或者僅僅禁止保留這樣的腳本:

<TABLE>
    <TR>
      <SCRIPT></SCRIPT>
        <TD>
        </TD>
    </TR>
</TABLE>

(這可能更好嗎?):

<TABLE>
    <TR>
        <TD>
         <SCRIPT></SCRIPT>
        </TD>
    </TR>
</TABLE>

更改doctype? 你怎么看?

由於TR的內容模型定義為(TH|TD)+ ,因此TR不允許使用SCRIPT

<!ELEMENT TR       - O (TH|TD)+        -- table row -->

這意味着THTD一個或多個元素。

SCRIPT是允許在TD TD定義

<!ELEMENT (TH|TD)  - O (%flow;)*       -- table header cell, table data cell-->

其中參數實體定義為:

<!ENTITY % flow "%block; | %inline;">

內聯定義為:

<!ENTITY % inline "#PCDATA | %fontstyle; | %phrase; | %special; | %formctrl;">

特別定義為:

<!ENTITY % special
   "A | IMG | OBJECT | BR | SCRIPT | MAP | Q | SUB | SUP | SPAN | BDO">

自從HTML 5發布以來,在大多數類型的表元素中都有一個<script> 合法的,包括tr

https://html.spec.whatwg.org/multipage/tables.html ,您可以看到tablecaptiontbodytheadtfoottrtdth的內容模型都包含“Flow content”“一個或多個腳本支持元素” https://html.spec.whatwg.org/multipage/dom.html#flow-content-2https://html.spec.whatwg.org/multipage/dom.html#script-supporting-elements-2我們分別看到script被定義為流內容和腳本支持元素,因此允許在任何這些元素中使用。

值得注意的例外是colgroup s(只能包含coltemplate s)和col s(不能包含內容)。 你不能把script放在其中任何一個。

這意味着提問者的示例HTML帶有一個tr內的腳本...

<TABLE>
    <TR>
      <SCRIPT></SCRIPT>
        <TD>
        </TD>
    </TR>
</TABLE>

...現在有效,您可以在https://html5.validator.nu確認。

Gumbo的回答是 ,說明script s被允許在td內但不是tr s,對於HTML 4來說是正確的,但現在已經過時了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM