4

document.write を使用してデータを返す外部の JavaScript ファイル (制御できない) に依存する Web ページを作成しています。ドキュメント全体を上書きせずに関数を動的に呼び出す方法はありますか? これが私が考えることができる最も簡潔なコードです:

<html>    
<head>
<script type="text/javascript">
    function horriblefunction () {
        document.write("new text");
    }
</script>
</head>

<body>
Starting Text...
<div id="pleasewriteinme"></div>
Other text...
<button onclick="horriblefunction();">Click</button>
</body>
</html>

「horriblefunction()」を変更せずに(外部であるため)、ページを上書きする代わりに、新しいテキストを div に配置できるという考えが始まりました。これは可能ですか、それともページの作成時に div 内で関数を呼び出す必要がありますか?

助けてくれてありがとう

4

2 に答える 2

5

ページのレンダリングが終了した後に使用する唯一の方法document.writeは、関数を一時的に独自の関数の1つに置き換えて、コンテンツをdivに押し込むことです。例えば

function horriblefunction() { 
    var old_dw = document.write;
    document.write = function(text) { 
        document.getElementById( 'some_div' ).innerHTML = text;
    }

    // now call your external JS function that uses document.write

    document.write = old_dw;
}

これは、外部JSがすでにロードされていて、関数を呼び出している限り機能します。JSをロードする必要がある場合(たとえば、<script>DOMに新しいタグを挿入することによって)、その操作は非同期であることに注意してください。古いバージョンのを復元しても安全な場合は、DOMを監視する必要がありますdocument.write

于 2010-06-02T16:28:07.997 に答える
2

http://bezen.org/javascript/index.htmlからの動的スクリプト読み込みを使用してみてください

bezen.domwrite.js-ページの読み込み後に外部スクリプトを安全に読み込むためにdocument.writeとwritelnをキャプチャします。

于 2010-06-02T16:28:00.127 に答える