2

私は<script>innerHTMLに要素を出力しようとしています:

<script type="text/javascript">
    function fileManager()
    {
        data = document.getElementById("FM");
        data.innerHTML = "<script type='text/javascript' src='functions.js'></script>";
    }
</script>
    <div id="FM"></div>
    <ul id="show-menu">
        <li onClick="fileManager()">File Manager
    </ul>

スクリプトのinnerHTMLビットは完全に機能します。二重引用符( ")内の文字のエスケープに問題があるだけです。全体<script type='text/javascript' src='functions.js'></script>が壊れているか間違って書かれているようで、何が問題なのか理解できないようです。

ご参考までに、functions.jsファイルにはdocument.write("test");テスト目的でのみ含まれています。

何らかの理由でこれは機能しません。結果は壊れたページになります。スクリプトに他の関数が少し表示されますが、意味がありません。どうすれば正しくエスケープできますか?

4

2 に答える 2

4

スクリプト内のリテラル<script>/</script>は、実際にはスクリプト自体を含むhtmlタグを壊しています.innerHTML スクリプトを実行またはロードしないという問題もあり ます。だから私は提案します:

function fileManager()
{
    var script = document.createElement("script");
    script.type = "text/javascript";
    script.src = 'functions.js';
    document.getElementById("FM").appendChild(script);
}
于 2012-07-13T20:46:56.450 に答える
0

特定のブラウザには、javascriptを使用してスクリプトタグを挿入しようとすると混乱するバグがあります。あなたがする必要があるのは、次のようにスクリプトタグを分割することです。

"<scr"+"ipt..........</scr"+"ipt>"

これは機能します。

于 2012-07-13T20:47:57.317 に答える