2

まあ、これは本当に問題ではありませんが、何かが本当に私に興味を持っています。

通常、私たちは頭/体のように要素を追加します

$("<style><\/style>").appendTo("head");
$("<div><\/div>").appendTo("body");

そして、生成されたソースコードを見ると、これらの要素は実際にそこにあります。しかし、

$("<script><\/script>").appendTo("head");

スクリプト要素はソースコードに表示されません。

jQueryのソースコードを調べたところ、純粋なjavascript以外に特別なものは見つかりませんでした

append: function() {
    return this.domManip(arguments, true, function( elem ) {
        if ( this.nodeType === 1 ) {
            this.appendChild( elem ); // <--
        }
    });
},

純粋なJavascriptを使用してスクリプト要素をheadに追加すると、表示されます。

では、jQueryはどのようにしてスクリプトを「非表示」にし、その間に「アクセス可能」にするのでしょうか。
スクリプトタグの何が特別なのですか?

更新:答える前に注意してください

  • 私は問題を解決しようとはしていません。
  • 私はFirebug/Developerツールを使用しています。
  • GENERATEDソースコードを表示しています。
4

4 に答える 4

1

appendToあなたが最初に信じているかもしれないように、これは単独で関連しているわけではありません。むしろ、これは、任意のHTML文字列をDOMに挿入するすべての関数に対してjQueryが行うことです。

これが発生する理由に関する詳細な回答を確認するには、この同じ質問に対するJohnResigの回答をここで読んでください。

私の知る限り、jQueryは、コードの再実行を回避するために、スクリプトタグをDOMに挿入した後に実際に削除します。

于 2011-08-04T22:44:42.637 に答える
0

これを試して

<script>
$("<scri"+"pt></sc"+"ript>").appendTo("head");
</script>

あなたはそれをあなたのコードから「エスケープ」しなければなりません、さもなければブラウザはそれをあなたの終わりとして認識します<script>

于 2011-08-04T22:37:09.147 に答える
0

ほとんどのブラウザの[ソースの表示]オプションは、ページが最初に読み込まれたときのマークアップの外観のみを表示します。ページの読み込み後にDOMを操作しているため、「ソースを表示」したときにこれらの変更をすぐに確認することはできません。

Firebug(Firefox用)やIE開発ツールバー(Internet Explorer)などの一部のWeb開発ツールは、要素を検査できるようにすることで、操作されたマークアップを表示します。

于 2011-08-04T22:38:19.277 に答える
0

これに対する答えはすでにあると思いますが、見つけたものについてメモを追加すると思いました...

私は似たようなものに出くわしました:私は私のウェブサイトの私のh1、h2、h3要素のそれぞれへのリンクの目次リストを生成していました。TOCはサイト全体のページにまたがり、別のページに含まれます。これを手動で作成するのではなく、すべてのページを組み合わせてから、jqueryを使用して、各ヘッダーへのハイパーリンクの動的な順序付きリストをすばやく作成しました。

次に、そのコードをコピーして独自のページに貼り付け、利用できるようにします-Firefoxで発生した問題は、コードが「ソースの表示」ウィンドウに表示されず、firebuginspect要素のHTMLウィンドウにのみ表示されることでした。 -では、どうすればそれをコピーできますか?

IEの開発者ツールを使用すると、開発者セクションのHTML編集オプションを利用して、要素エクスプローラーウィンドウからコードをコピーして貼り付けることができることがわかりました。

各h1、h2、h3 ... h7へのリンクのコンテンツリストの大きなネストされたテーブルを作成するためのより良い方法があるかもしれませんが、私はこれすべてに不慣れで、このルートを進みました。多分これは誰かを助けるでしょう:)

于 2012-05-13T15:34:21.557 に答える