2

我是 ExtJs 的新手。我在 twitter 上创建了一个 twitter 小部件。它在简单的 html 页面上运行良好。正如推特所说,你只需要包括

<a class="twitter-timeline" href="https://twitter.com/search?q=%23certain" data-widget-id="widget-id">Tweets about "#certain"</a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+"://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>

将它放到 html 中会在 UI 上创建一个漂亮的小部件,但我希望它包含在 extjs 面板中。它只创建一个超链接而不是小部件。谁能帮我。

4

3 回答 3

4

如果有人正在寻找答案,这就是我实现它的方法,

var tweetHtml = '<a class="twitter-timeline" href="https://twitter.com/search" data-widget-id="your-widget-id" height="' + height + '" >Tweets for Certain Mobile</a>';
var dialog = new Ext.Panel({
    xtype: 'panel',
    height: '100%',
    border: false,
    scroll: 'vertical',
    listeners: {
        single: true, // Remove the listener after first invocation
        afterrender: function() {
            ! function(d, s, id) {
                var js, fjs = d.getElementsByTagName(s)[0],
                    p = /^http:/.test(d.location) ? 'http' : 'https';
                if (!d.getElementById(id)) {
                    js = d.createElement(s);
                    js.id = id;
                    js.src = p + "://platform.twitter.com/widgets.js";
                    fjs.parentNode.insertBefore(js, fjs);
                }
            }(document, "script", "twitter-wjs");
        }
    },
    html: tweetHtml
});
于 2013-09-11T07:35:42.093 回答
1

在传递给 Ext.Panel 的构造函数的配置对象中,只需为html属性添加一行。该属性的值就是定义 Twitter 小部件的 HTML 字符串。

于 2013-09-06T15:09:40.283 回答
1

将 javascript 部分移动到afterrender面板的侦听器中:

Ext.widget('panel', {
    renderTo: Ext.getBody()
    ,title: "Tweeter!"
    ,width: 500
    ,height: 300
    ,html: '<a class="twitter-timeline" href="https://twitter.com/search?q=%23certain" data-widget-id="widget-id">Tweets about "#certain"</a>'
    ,listeners: {
        afterrender: function() {
            !function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+"://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");
        }
    }
});
于 2013-09-06T15:39:24.480 回答