0

Google アナリティクスに関して同様の質問が寄せられていることは承知していますが、この場合、トラッキング コードはもう少し複雑です。prettyPhoto で表示される各画像にトラッキング コードを追加したいと考えています。

prettyPhoto の init メソッドで、関数を呼び出すために changepicturecallback を定義します: myCallbaclFunc:

$(".gallery:first a[rel^='prettyPhoto']").prettyPhoto({
            animation_speed:'normal',
            theme:'light_square',
            slideshow:3000, 
            autoplay_slideshow: false, 
            show_title: true, 
            overlay_gallery_max: 3000,
            changepicturecallback: myCallbackFunc
            });

次に、myCallbackFunc は次のように定義されます。

myCallbackFunc = function() {
//append code to social container div
$('.pp_social').append('<div class="netscope"><script type="text/javascript">var WRP_ID=316817;var WRP_SECTION="COMUNIDADE";var WRP_SUBSECTION="Estudos MensHealth";var WRP_SECTION_GRP="316817 - MensHealth";var WRP_SUBSECTION_GRP= WRP_SECTION;var WRP_CONTENT="Home content";var WRP_CHANNEL;var WRP_ACC;wreport_ok=0;</scr'+'ipt><script type="text/javascript" src="http://www.autohoje.com/inc/netscope2.js"></scr'+'ipt><script type="text/javascript">if(wreport_ok==1){ var w_counter = new wreport_counter(WRP_SECTION, WRP_SUBSECTION, WRP_ID, WRP_ACC, WRP_CHANNEL, WRP_SECTION_GRP, WRP_SUBSECTION_GRP);w_counter.add_content(WRP_CONTENT);w_counter.count();}</scr'+'ipt></div>');

}

しかし、生成されたコードを調べたときに得られるのは、空の div class="netscope" だけです

私が使用すべき「追加」以外の方法はありますか?どういうわけかJavaScriptコードをエスケープする必要がありますか?

前もって感謝します。

4

1 に答える 1

0

<script> 要素を追加できません

この問題があるブラウザを使用している可能性があります。

または、DOM で表示されない問題である可能性があります。

この問題に関する@Hendra Uziaの回答を参照してください。

すべての jQuery の挿入メソッドは、内部で domManip 関数を使用して、要素が DOM に挿入される前と後に要素をクリーンアップ/処理します。domManip 関数が行うことの 1 つは、挿入しようとしているスクリプト要素を取り出して、残りの DOM フラグメントを挿入するのではなく、「evalScript ルーチン」を介してそれらを実行することです。スクリプトを個別に挿入し、評価してから、DOM から削除します。

jQuery がこれを行う理由の 1 つは、特定の状況でスクリプトを挿入するときに Internet Explorer で発生する可能性がある「アクセス許可が拒否されました」エラーを回避するためだと思います。また、同じスクリプトが、挿入して DOM 内を移動する包含要素内にある場合、同じスクリプトを繰り返し挿入/評価すること (問題を引き起こす可能性があります) を回避します。

スクリプト インジェクションの複雑さについての私の理解はかなり限られているため、さらに議論したい場合は、jQuery フォーラムにトピックを投稿してください。

于 2012-06-28T01:15:39.560 に答える