0

以下のコードブロックをテストに使用すると、最初のボックスで始まる元のHTMLを記述し、<xsl:key name="Name" match="/NewSet/ps1/Name/text()" use="." />「IFRAMEのHTMLモード」という名前の3番目のボックスから結果を取得します。<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として取得します。これにより、要素の作成に使用された元の文字列ではなく、要素から新しいHTMLコードが作成されます。

これをさまざまなブラウザでテストすると、さまざまな結果が得られることがわかります。一部のブラウザは、たとえば、タグ名を大文字にしたり、属性を再配置したり、要素を有効なHTML要素に変換したり、HTML要素で囲んで有効なドキュメントにしたりする場合があります。

結果を自己終了タグとして表示する場合は、XHTMLドキュメント(またはHTML5ドキュメント)をiframeに配置する必要があります。そうしないと、自動終了タグのないHTMLとして返されます。

于 2013-02-27T18:05:54.963 に答える