0

我知道有人问过关于谷歌分析的类似问题,但在这种情况下,跟踪代码有点复杂。我想将跟踪代码附加到通过 prettyPhoto 查看的每个图像。

在 prettyPhoto 初始化方法中,我定义了 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>');

}

但是当我检查生成的代码时,我得到的只是 emtpy div class="netscope"

除了“追加”我应该使用其他方法吗?我应该以某种方式逃避 javascript 代码吗?

提前致谢。

4

1 回答 1

0

无法附加 <script> 元素

可能是您在有此问题的浏览器中。

或者它可能是您在 DOM 中看不到它的问题,

请参阅@Hendra Uzia 对这个问题的回答,

jQuery 的所有插入方法都在内部使用 domManip 函数在元素插入 DOM 之前和之后清理/处理元素。domManip 函数所做的一件事是取出任何将要插入的脚本元素并通过“evalScript 例程”运行它们,而不是将它们与 DOM 片段的其余部分一起注入。它分别插入脚本,评估它们,然后将它们从 DOM 中删除。

我相信 jQuery 这样做的原因之一是避免在某些情况下插入脚本时 Internet Explorer 中可能出现的“权限被拒绝”错误。如果它位于您要插入的包含元素内,然后在 DOM 中移动,它还可以避免重复插入/评估相同的脚本(这可能会导致问题)。

我对脚本注入错综复杂的理解非常有限,所以如果您想进一步讨论它,也许您可​​以在 jQuery 论坛上发布一个主题。

于 2012-06-28T01:15:39.560 回答