为什么innerHTML作为内容时表现不同?

时间:2015-12-21 19:41:47

标签: html dom browser

有谁可以告诉我为什么特别在这里?

<html>
    <head>
        <script src="editor.js"></script>
    </head>
    <body>
        <div id="scripts" class="scripts">
            Editor.Execute('<html>Html String</html>');
            Editor.Execute('<something>Html String</something>');
        </div>
    </body>
</html>

document.getElementById("scripts").innerHTML显示something html消失。

    Execute('Html String');
    Execute('<something>Html String</something>');

它在Firefox和Chrome中的行为方式相同。

2 个答案:

答案 0 :(得分:4)

您正在遇到this issue

基本上,浏览器会在您的JavaScript甚至可以访问该页面之前清理HTML标记 - 您可以在Chrome元素检查器中检查,<html>标记不存在。

我想答案取决于您正在尝试做什么,但如果您只是尝试将该代码输出到网页上,则可以逃避字符:

<html>
    <body>
        <div id="scripts" class="scripts">
            Execute('&lt;html&gt;Html String&lt;/html&gt;');
            Execute('&lt;something&gt;Html String&lt;/something&gt;');
        </div>
    </body>
</html>

然后document.getElementById('scripts').innerHTML将输出:

Execute('&lt;html&gt;Html String&lt;/html&gt;');
Execute('&lt;something&gt;Html String&lt;/something&gt;');

然后您可以用JavaScript替换HTML实体。

答案 1 :(得分:0)

不知道你在Execute()做了什么,很难说那里发生了什么。

以防万一:HTML文档只能有一个<html>节点。