1

jQuery のヘルプが必要です。

$.get 経由で js ページ コンテンツが埋め込まれた html を取得しようとすると、うまくいきます。しかし、それをいくつかの div に追加しようとすると、すべてのスクリプトが削除されます。

コンソールでは、私がこのようなことをしているときはうまく見えます

$('.my_div').html() + '<script>alert("text")</script>'

しかし、私がやっているとき

 $('.my_div').html($('.my_div').html() + '<script>alert("text")</script>')

スクリプトが実行され、削除されています

実行および削除せずにhtml + jsコードをdivに追加するにはどうすればよいですか?

ありがとう!

更新:

私の例:

index.html

...

<div class="masonry">
    <div class="a1">
        <p>text</p>
        <script>alert('example')</script>
    </div>
    <div class="a1">
        <p>text</p>
        <script>alert('example')</script>
    </div>
    <div class="a1">
        <p>text</p>
        <script>alert('example')</script>
    </div>
</div>

...

<script>

$.get('get_news.php',function(response){

    $('.masonry').append(response);

});
</script>

...

get_news.php

    <div class="b1">
        <p>text</p>
        <script>alert('example1')</script>
    </div>
    <div class="b1">
        <p>text</p>
        <script>alert('example1')</script>
    </div>
    <div class="b1">
        <p>text</p>
        <script>alert('example1')</script>
    </div>

...

そして、私は得るつもりです

<div class="masonry">
    <div class="a1">
        <p>text</p>
        <script>alert('example')</script>
    </div>
    <div class="a1">
        <p>text</p>
        <script>alert('example')</script>
    </div>
    <div class="a1">
        <p>text</p>
        <script>alert('example')</script>
    </div>

    <div class="b1">
        <p>text</p>
        <script>alert('example1')</script>
    </div>
    <div class="b1">
        <p>text</p>
        <script>alert('example1')</script>
    </div>
    <div class="b1">
        <p>text</p>
        <script>alert('example1')</script>
    </div>

</div>

どうすればできますか?

4

2 に答える 2

1

これがデフォルトの動作です。DOMにコンテンツを追加するときに、.html()スクリプトとそれらを取り除きます。evaljQueryは$.parseHTML、XSSを防ぐために、スクリプトを評価せずにスクリプトを削除するデフォルトを提供します。

ページですでにスクリプトを実行している場合は、ほとんどの場合、コードを同じスクリプトに入れることができます。ただし、ページに新しいスクリプトを追加する必要がある場合は、次の方法で行うことができますappend

$('.my_div').append($('<script>', { text: 'alert("foo");' }));

フィドル

于 2013-02-24T01:30:45.370 に答える
0

元のコンテンツを削除したくない場合は、appendを使用できます。スクリプトタグの実行を停止する方法の1つは、スクリプトタイプをに変更する"text/html"か、htmlエスケープ関数を使用することです。

http://jsfiddle.net/R5xad/

于 2013-02-24T01:28:55.033 に答える