6

いくつかの動的ページがあり、ページが完全にレンダリングされる前に特定の要素を変更したいと考えています。

私のスニペットは次のようなものです:

document.body.getElementById("change").innerHTML = "<img src...";

コンテンツ サーバー側を変更するアクセス権がありません。

ページがレンダリングされる前にコードが実行されるようにするには、スニペットを配置するのに最適な場所はどこですか?

むしろ、Javascript を HEAD (window.onloadイベント内?) または閉じている BODY (イベント リスナー内ではない) の前に配置するのが最適ですか?

4

5 に答える 5

2

ページがレンダリングされる前にスクリプトを実行できる可能性は非常に低いと思います。確かに、インラインスクリプトを配置して、コンテンツを表示したい場所でdocument.write(...)を使用させることはできますが、これは恐ろしい解決策です。それ以外の場合、できる最善の方法は「DOM Ready」イベントです。すべてのブラウザーで一貫して実行することは困難ですが、詳細を抽象化するためのライブラリが本当に必要です。jQueryは、ページとすべてのリソースの読み込みが完了したときではなく、DOMの準備ができたときにイベントを発生させるreadyメソッドを提供します。

于 2010-04-28T10:08:14.133 に答える
1

ブラウザは通常、要素が解析された直後に要素をレンダリングするため、script参照される要素の直後の要素にコードを配置するのが最善の方法です。

<div id="change"></div>
<script type="text/javascript">
    document.body.getElementById("change").innerHTML = "<img src...";
</script>
于 2010-04-28T10:14:29.167 に答える
1

あなたの問題を正しく理解しているかどうかはわかりませんが、ヘッド内でイベント リスナー (jQuery など) を使用すると、呼び出される$(document).ready()関数 ( ) にスニペットを渡すことで dom 構造が読み込まれると、要素を変更できます。handlerイベントが発生したとき。

<HEAD>
    //...
    <SCRIPT type="text/javascript">

        $(document).ready(function() {
            $("#change").append(
                $("<img src=\"...\">") 
            ) ;
        }) ;

    <SCRIPT>

</HEAD>

コア JavaScript を使用して、mozilla (W3C) および Internet Explorer イベント仕様のイベント リスナーをフォークする必要があります。インターネット上でそれを行う方法に関するドキュメントがたくさんあります。

いずれにせよ、この場合の最善の方法は、レンダリング後にコンテンツを変更するのではなく、自分でコンテンツを作成することです。

于 2010-04-28T11:29:03.790 に答える
0

AFAIKあなたはこれを行うことはできません。ページがレンダリングされる前は要素がなく、DOMツリーにロードされていない要素にアクセスできないためです。

于 2010-04-28T10:06:06.747 に答える