Документированный исходный код виджета Twitter доступен по адресу http://twitter.com/javascripts/widgets/widget.js, и его чтение расскажет вам все, что вам нужно знать о том, как управлять его поведением.Вкратце, виджет работает так:
Когда виджет впервые создается с new TWTR.Widget
, он вызывает .init()
и принимает к сведению, где он встроен в страницу, вставляя HTML-код виджета в DOM.позиция.(Это всегда предполагает, что вы встраиваете, поэтому, если вы создаете новый виджет в скрипте головы или в контексте окна, он в конечном итоге встраивается в корень окна.)
Новы все равно можете создать виджет, используя функцию (если она вызывается из встроенного скрипта), а затем удерживать ссылку на виджет для дальнейшего использования.Когда вы вызываете .render()
позже, виджет просто перерисовывает себя, где бы он ни находился.
Существуют некоторые псевдо-приватные методы объекта TWTR, которые вы можете попробовать для забавы, такие как _getWidgetHtml()
-который вызывается .render()
, но вам не нужно их использовать.
Я только что написал следующий код, и он хорошо работает для меня.Вызовите эту функцию из встроенного скрипта (как показано), а затем вызовите ее снова с новым параметром поиска, чтобы повторно отрендерить его.
<div id="my_widget_region">
<script src="http://widgets.twimg.com/j/2/widget.js"></script>
<script>do_twitter_widget('"#winning" or "justin bieber"');</script>
</div>
function do_twitter_widget(search_query, title, subtitle) {
if (!window.widgetRef) {
window.widgetRef = new TWTR.Widget({
version: 2,
type: 'search',
search: search_query,
interval: 6000,
title: title || 'Tweets related to',
subject: subtitle || search_query,
width: 'auto',
height: 500,
theme: {
shell: {
background: '#8EC1DA',
color: '#FFFFFF'
},
tweets: {
background: '#FFFFFF',
color: '#444444',
links: '#1985B5'
}
},
features: {
scrollbar: false,
loop: true,
live: true,
hashtags: true,
timestamp: true,
avatars: true,
behavior: 'default'
},
ready: function() {
// when done rendering...
}
});
window.widgetRef
.render()
.start();
}
else {
if (search_query != window.old_twitter_search) {
window.widgetRef
.stop()
.setSearch(search_query)
.setTitle(title || 'Tweets related to')
.setCaption(subtitle || search_query)
.render()
.start();
}
}
window.old_twitter_search = search_query;
return window.widgetRef;
}