通过jQuery嵌入<script>?</script>

时间:2011-01-24 21:19:32

标签: jquery

我试图通过for循环附加一个Twitter脚本和一些HTML。循环分叉很好,直到我在末尾添加<script>标签。我想要做的是让jQuery吐出我的数据,然后在信息下面放一个推特推文按钮。

我想知道是否有另一种方法可以让jQuery将脚本附加到我的#entries div。

我的代码如下:

$.each(data.Entries, function(entriesIndex, entriesObject) {

    if (entriesObject.Field21 == "Yes") {

        if (entriesObject.Field15 == "Yes") {

            $("<li />", {
                html: '<p><a href="http://twitter.com/share">foo</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></p>'


                // Add it to the page
            }).appendTo("#entries");

        } // end if entry = yes
    } // end if approved = yes

}); // end for each loop

更新

看起来它将脚本放在页面上但不会触发 - 不太熟悉twitter脚本的工作原理,但想知道你们是否可以提供帮助!谢谢!

请参阅此处的示例页面:http://bostonwebsitemakeover.com/vote.html

    $.each(data.Entries, function(entriesIndex, entriesObject) {

        var p, tweet; // oh hey look, variables!

        if (entriesObject.Field21 == "Yes") {

            if (entriesObject.Field15 == "Yes") {

                     p = $("<p />", {
                    html: "<p>" + '<a href="' + entriesObject.Field19 + '" target="_blank">' + entriesObject.Field4  +  "</p>" + '<img src="http://images.websnapr.com/?url=' + entriesObject.Field19 + '" />' + "</a>"
                    });

                     tweet = $('<script>').attr({
                        type: 'text/javascript',
                        src: 'http://platform.twitter.com/widgets.js'

                    });

            } // end if entry = yes

        } // end if approved = yes


        $('<li class="entry">').append(p).append(tweet).appendTo('#entries');

}); // end for each loop

4 个答案:

答案 0 :(得分:2)

$('<script>').attr({
  type: 'text/javascript',
  src: 'http://platform.twitter.com/widgets.js'
}).appendTo('#entries');

我认为会做到这一点。此外,在使用jQuery插入代码时,尝试使用.attr,.text等参数。使它更稳定,并半保护你免受XSS。

编辑 实际上,有趣的是,我认为这是推荐人禁止的。我似乎无法导入它,即使在jsfiddle,但我可以直接访问它。我正在考虑它...... 没关系,似乎加载,只是没有出现在Google chrome / firebug DOM树中(但chrome显示它在资源时间轴中加载)。

答案 1 :(得分:1)

修改 哇,不理我。我没有仔细阅读你的问题。该脚本显然不是你的,因为它位于twitter.com哈哈。对不起。


tweet按钮的脚本是在widget.js脚本中加载的吗?如果是这样,它是你写的自定义脚本吗?我问,因为您可以修改按钮的单击处理程序而不是live(),然后将字符串“click”和您想要的函数传递给处理程序。当动态添加到页面时,这会将处理程序附加到每个按钮。

答案 2 :(得分:0)

您可以以这种方式添加脚本;但是,许多脚本挂钩到某种类型的onload事件,当您通过脚本添加脚本时,页面onload事件不会触发。

如果它今天有效并且推特发生了变化,那么它明天可能会被打破。

答案 3 :(得分:0)

看起来像你的&lt; a&gt;缺少班级“twitter-share-button”

我认为从它看起来脚本会查找与该类的链接并生成按钮和推文计数(实际上是iframe)

我原以为你只需要在页面上加载一次脚本,但它可能无法处理由javascript动态构建的链接

修改 http://dev.twitter.com/pages/tweet_button_faq#multiple-buttons肯定会说只加载一次脚本