0

関数を呼び出すjavaScriptがあります:

var combineddata = jQueryGetHtml();

関数は次のとおりです。

// Get ALL of the HTML using jQuery
var jQueryGetHtml = function()
{
    var htmlStartTag = function()
    {
        return $('html').contents();

        var attrs = $('html')[0].attributes;
        var result = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html';
        $.each(attrs, function() { 
            result += ' ' + this.name + '="' + this.value + '"';
        });
        result += '>';
        return result;
    }

    return htmlStartTag() + $('html').html() + '</html>';
}

これは、次のようなインラインJavaScriptを削除することを除いて、うまく機能します。

<script type="text/javascript">
var addthis_config = {"data_track_clickback":true, "ui_click":false};
</script>

別の問題:このdiv

<div id="Pc8od0kc" class="reusable-block">
    <a href="http://www.addthis.com/bookmark.php?v=250&amp;username=somebody" class="addthis_button">
        <img width="125" height="16" style="border: 0pt none;" alt="Bookmark and Share" src="http://s7.addthis.com/static/btn/v2/lg-share-en.gif">
    </a>
    <script type="text/javascript">var addthis_config = {"data_track_clickback":true, "ui_click":false};</script>
    <script src="http://s7.addthis.com/js/250/addthis_widget.js#username=claremontmc" type="text/javascript"></script>
</div>

になります

<div id="Pc8od0kc" class="reusable-block">
    <a class="addthis_button" href="http://www.addthis.com/bookmark.php?v=250&amp;username=somebody">
        <img src="http://s7.addthis.com/static/btn/v2/lg-share-en.gif" alt="Bookmark and Share" style="border: 0pt none;" height="16" width="125">
    </a>
</div>
4

2 に答える 2

1

html()getter はスクリプト コンテンツを削除しません。<script>から取得できない場合は、呼び出された時点で DOM にタグhtml()がなかったことが原因です。<script>

セッターでその要素に書き込みhtml(value)、後でそれを読み戻すと s<script>が削除されます。jQuery は意図的に<script>入力からタグを削除し (いくつかの非常に見当違いの正規表現ハッキングを使用して受信マークアップに対して行う厄介なことの中でも特に)、挿入時にタグ内のコードを手動で実行しようとします。

これは単に<script>to を書くだけinnerHTMLではブラウザがそのスクリプトを実行しないからです。ただし、その後、結果の DOM ノードで DOM 操作を行うと、ブラウザはスクリプトを実行することがありますが、異なるタイミングで実行されるため、ブラウザ間の望ましくない不整合が発生します。

あなたの目的は何ですか?なぜ<script>要素を書き込んで取得する必要があるのですか? または<script>を介し​​てドキュメントに書き込むことは、ほとんど良い考えではありません。html()innerHTML

于 2010-10-09T00:52:46.710 に答える
0

jQuery.getScript()を使用してスクリプトを取得し、ページ上で実行します。実行しようとしているスクリプトがわからず、HTML を取得してそれらのスクリプトを依存的に実行するだけの場合は、設計上の大きな問題があります。

于 2010-10-09T01:24:58.873 に答える