我正在尝试将AddThis小部件添加到ember.js应用。我正在使用直接从addthis.com获取的基本代码:
<!-- AddThis Button BEGIN -->
<div class="addthis_toolbox addthis_default_style addthis_32x32_style">
<a class="addthis_button_facebook"></a>
<a class="addthis_button_twitter"></a>
<a class="addthis_button_google_plusone_share"></a>
<a class="addthis_button_linkedin"></a>
<a class="addthis_button_pinterest_share"></a>
</div>
<script type="text/javascript" src="http://s7.addthis.com/js/300/addthis_widget.js#pubid=ra-51ddaec37ede7c28"></script>
<!-- AddThis Button END -->
...并收到此错误:“未捕获的TypeError:无法从第2行的http://ct1.addthis.com/static/r07/core085.js读取未定义的属性'call'。
我已经提出过支持,但还没有运气。关于造成这种情况的任何想法都会有所帮助!提前谢谢!
编辑:我目前在应用中的模板中有上面的代码。
答案 0 :(得分:2)
我深入研究了addthis窗口小部件和恕我直言,从脚本加载的代码执行了一些讨厌的事情,比如创建script
标记或{{1}在iframe
模板中,小部件脚本执行的DOM操作不会与handlebars
一起工作,除非addthis后面的团队做了一些事情来使小工具更多整合友好。
所以我看了一些替代共享小部件,而sharethis与addthis基本相同,但有一个很大区别 - 我很容易使用ember.js
基本上我所做的就是为窗口小部件创建一个视图,并在ember.js
内部调用窗口小部件初始化:
didInsertElement
然后在另一个模板中,只需执行以下操作即可轻松使用小部件:
App.WidgetView = Ember.View.extend({
templateName: 'widget',
didInsertElement: function() {
stLight.options({publisher: "ur-733dae74-7b06-4fef-3f54-f60dce5ce03e", doNotHash: false, doNotCopy: false, hashAddressBar: false});
}
});
{{view App.WidgetView}}
模板如下所示:
widget
在这里查看working demo。
免责声明:虽然我的回答并没有直接解决您的问题,但也许它可以帮助您通过使用不同的共享小部件采取不同的方法,因为我猜您不会放弃{{1}只是因为一些模糊的编程小部件无法正常工作。
希望它有所帮助。