相关疑难解决方法(0)

(非空)自动关闭标签在HTML5中有效吗?

W3C验证不喜欢自闭合标签(那些与"端/>")上非空元素.(Void元素是那些可能不包含任何内容的元素.)它们在HTML5中仍然有效吗?

可接受的 void元素的一些示例:

<br />
<img src="" />
<input type="text" name="username" />
Run Code Online (Sandbox Code Playgroud)

被拒绝的非虚元素的一些例子:

<div id="myDiv" />
<span id="mySpan" />
<textarea id="someTextMessage" />
Run Code Online (Sandbox Code Playgroud)

注意: W3C验证器实际上接受无效的自动关闭标签:由于简单的拼写错误(\>而不是/>),作者最初遇到了问题.但是,自动关闭标签在HTML5中通常不是100%有效,并且答案详细说明了各种HTML风格的自闭标签问题.

html syntax w3c-validation

635
推荐指数
6
解决办法
27万
查看次数

测试元素是否可以包含文本

如果HTML元素可以包含一些文本,我是否可以测试(使用纯javascript或jQuery)干净而强大的方式?

例如,<br>,<hr><tr>不能包含文本节点,同时<div>,<td>还是<span>可以的.

测试此属性的最简单方法是控制标记名称.但这是最好的解决方案吗?我认为这是最糟糕的......

编辑:为了澄清问题的意义,需要指出完美的答案应该考虑两个问题:

  1. 根据HTML标准,元素是否可以包含文本节点?
  2. 如果元素包含一些文本,这会显示吗?

显然,前一个列表的每个点都有一个子答案.

html javascript jquery dom

10
推荐指数
1
解决办法
447
查看次数

在处理HTML Void元素的自定义指令时,AngularJS是否存在错误

UPDATE

  1. 首先,这不是Angular(@PSL)中的错误.
  2. 我出于历史目的将我原来的问题留在了下面.
  3. 这不是HTML规范中的错误.点击下面评论者的一些链接(@zerflagL)后,我看到HTML规范说VOID ELEMENTS不是SELF CLOSING ELEMENTS的同义词(这里是关于该主题的SO问答).
  4. 好的,我这么蹩脚的研究.
  5. 然而,加倍努力:

HTML应该包含自闭标签(它似乎不再存在),兄弟姐妹不应该神奇地成为子DOM元素(innerHTML).

感谢@PSL,@ shaunhusain和@zeroflagL让我直截了当.


我相信我可能在Angular的自定义指令处理中发现了一个错误,并希望确认我没有误解自定义指令行为.我是AngularJS的新手,所以也许我犯了一个错误.

看起来当Angular处理void元素上的自定义指令时,会发生不正确的DOM更改,并将对等元素推送到内部HTML.这是一些HTML:

<div ng-app="myApp">
    <div ng-app="mainController">
        <div>
            <voidtagtest></voidtagtest>
            <p>Example 1 - stays peer</p>
        </div>
        <div>
            <voidtagtest/>
            <p>Example 2 - becomes innerHTML</p>
            <p>this one, too.</p>
        </div>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

这是Angular的一些JavaScript:

angular.module('myApp', [])
    .controller('mainController', function ($scope) {
        $scope.message = 'a msg';
    })
    .directive('voidtagtest', function () {
        return {
            restrict: 'E'
        };
    });
Run Code Online (Sandbox Code Playgroud)

Angular处理后的DOM(需要浏览器Web检查)是:

    ...
    <div>
        <voidtagtest>
            <p>Example 2 - becomes innerHTML</p>
            <p>this one, too.</p>
        </voidtagtest>
    </div>
    ...
Run Code Online (Sandbox Code Playgroud)

注意两个Paragraph标签是如何被拉入voidtagtest元素的?

W3C定义 …

html javascript angularjs angularjs-directive

8
推荐指数
1
解决办法
1448
查看次数

在基本HTML中,正确的水平线元素&lt;hr&gt; &lt;/ hr&gt;或&lt;hr /&gt;

简单的问题。一个基本的水平尺,没有花哨,没有颜色,没有大小或宽度,没有对齐,是... <hr></hr>还是<hr/>

我了解其中的哪个有效,但哪个正确。

html

1
推荐指数
1
解决办法
1199
查看次数