0

当我使用下面的代码块进行测试时,我将最初的 HTML<xsl:key name="Name" match="/NewSet/ps1/Name/text()" use="." />写入第一个框中,我从第三个框中得到结果,名称为“IFRAME 的 HTML 模式”,例如<xsl:key name="Name" match="/NewSet/ps1/Name/text()" use="." ></xsl:key>

结果是没有/ 标签,我该如何防止这个问题。

我认为这是关于浏览器的文本引擎?不是吗?

<html>
<head>
    <title>Editable IFRAME test</title>
</head>
<body onload="SetEditable()">
    <b>Set your original HTML content here:</b><br />
    <textarea id="htmlArea" style="width: 783px; height: 189px"></textarea>
    <br />
    <input type="button" onclick="CreateHtml();return false;" value="Set Content in the IFRAME">
    <br />
    <b>Editable IFRAME element:</b>
    <br />
    <div style="width: 800px; height: 600px; border: 1px solid red;">
        <iframe style="padding-bottom: 0px; margin: 0px; padding-left: 0px; width: 100%;
            padding-right: 0px; height: 100%; padding-top: 0px" frameborder="0" src="javascript:void(0)"
            id="editor"></iframe>
    </div>
    <input type="button" onclick="ShowIFRAMEHTML();return false;" value="Show IFRAME HTML">
    <br />
    <b>HTML Mode of the IFRAME:</b>
    <br />
    <textarea id="htmlMode" style="width: 783px; height: 313px"></textarea>
    <script type="text/javascript">
        var editor1 = document.getElementById("editor"); //reference to the IFRAME element
        var htmlArea1 = document.getElementById("htmlArea"); //reference to the HTML area in which we put the content
        var htmlMode = document.getElementById("htmlMode"); //reference to the HTML area that displays the IFRAME content
        var oDocument = editor1.contentWindow.document;

        var sMarkup = "<html><head><title>New Document</title></head>" +
                  "<body contenteditable=true style='overflow:scroll;margin:0px;padding:0px;height:100%'>" +
                  "&nbsp;</body></html>";

        function SetEditable() {
            oDocument.open();
            oDocument.write(sMarkup);
            oDocument.close();
            oDocument["designMode"] = "on";
            oDocument.execCommand("2D-Position", false, true);
        }
        function CreateHtml() {
            oDocument.body.innerHTML = htmlArea1.value;
            htmlMode.value = oDocument.body.innerHTML;
        }
        function ShowIFRAMEHTML() {
            alert(oDocument.body.innerHTML);
        }

    </script>
</body>
</html>
4

1 回答 1

0

不,这是关于如何innerHTML创造价值的。

您将 HTML 代码放在 iframe 中,这会使其将其解析为元素。然后您将这些元素作为 HTML 获取,这将从 elemtns 创建新的 HTML 代码,而不是返回用于创建元素的原始字符串。

如果您在不同的浏览器中对此进行测试,您将看到得到不同的结果。例如,某些浏览器可能会将标签名称大写,重新排列属性,甚至将元素转换为一些有效的 HTML 元素或用 HTML 元素包围它以使其成为有效的文档。

如果要将结果作为自闭合标签,则需要在 iframe 中放置一个 XHTML 文档(或者可能是 HTML5 文档),否则它将作为没有任何自闭合标签的 HTML 返回。

于 2013-02-27T18:05:54.963 回答