我可以在 <TABLE> 中包含 <SCRIPT> 标记吗?

Posted

技术标签:

【中文标题】我可以在 <TABLE> 中包含 <SCRIPT> 标记吗?【英文标题】:Can I have <SCRIPT> tag inside <TABLE>? 【发布时间】:2011-04-09 04:00:31 【问题描述】:

我必须在表格中添加一个标签,因为 php 在那里编写了一个代码,用于将内容添加到之前创建的 javascript 数组中。但是,我收到了一个验证错误(4.01 strict)。

我有什么办法可以做到这一点,或者只是禁止保留这样的脚本:

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

(这可能更好吗?):

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

更改文档类型?你怎么看?

【问题讨论】:

我认为您至少应该使用 Xhtml。 HTML 4 就是 IE6。 @leppie 使用 XHTML,您根本不应该有内联脚本块。如果你要到处都有内联脚本,那么假装你的 HTML 是 XML 只会导致额外的问题。 @leppie:XHTML 也是一个垂死的标准; HTML5 是未来。 我有很多内在事件,所以 XML 还不适合我 @Andreas Bonini:HTML 5 的定稿日期是 2018 年,我可以等。 【参考方案1】:

TR 中不允许使用SCRIPT,因为TR 的内容模型定义为(TH|TD)+

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

表示THTD 的一个或多个元素。

SCRIPT 允许在TD 中使用。见definition of TD

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

parameter entity flow 定义为:

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

inline定义为:

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

special 定义为:

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

【讨论】:

这个答案已经过时了; scripts 内 trs 从 HTML 5 开始是合法的。我已经发布了我自己的 answer。【参考方案2】:

自 HTML 5 发布以来,在大多数类型的表格元素中包含&lt;script&gt; 是合法的,包括trs。

在https://html.spec.whatwg.org/multipage/tables.html,您可以看到tablecaptiontbodytheadtfoottrtdth 的内容模型都包括“流内容”“一个或多个脚本支持元素”。分别在https://html.spec.whatwg.org/multipage/dom.html#flow-content-2 和https://html.spec.whatwg.org/multipage/dom.html#script-supporting-elements-2,我们看到scripts 被定义为流内容和脚本支持元素,因此允许在这些元素中的任何一个中使用。

值得注意的例外是colgroups(只能包含cols 和templates)和cols(不能包含内容)。您不能在其中任何一个中添加script

这意味着提问者的示例 HTML 与 tr 内的脚本...

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

...现在有效,您可以在https://html5.validator.nu 确认。

Gumbo's answer,声明scripts 允许在tds 中,但不允许trs,对于 HTML 4 是正确的,但现在已经过时了。

【讨论】:

以上是关于我可以在 <TABLE> 中包含 <SCRIPT> 标记吗?的主要内容,如果未能解决你的问题,请参考以下文章

FindRow在span属性中包含文本值

在 Wenhixin bootstrap-table 中包含图像

在 "<%: %>" 中包含一个 JS 变量

如何在字符串中包含空格的 <span> 中应用椭圆效果?

在组件中包含部分会导致重复的 css

不能在 MinGW 中包含标头