2013-08-01 3 views
0

Я обновляю мобильное приложение jquery для работы с twitter api v1.1. Приложение имеет встроенные временные рамки на разных страницах, которые больше не работают из-за изменений Twitter.jQuery mobile с Twitter API

Я использовал функцию виджета для создания щебета, которая производит код, подобный этому;

<a class="twitter-timeline" href="https://twitter.com/twitterapi" data-widget-id="YOUR-WIDGET-ID-HERE">Tweets by @twitterapi</a> 
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script> 

Я включил этот код на свою страницу и все отлично работает при первом просмотре страницы. Однако на последующих страницах или возвращается на ту же страницу встроенная временная шкала не появляется, если я не обновляю браузер, заставляя перезагружать страницу.

Я подозреваю, что проблема связана с тем, как jqm использует ajax для загрузки страницы. Javascript twitter должен подключаться к событию готовности документа, но это никогда не вызывается после загрузки первой страницы, поскольку все последующие страницы загружаются через ajax.

Я пробовал вставлять твиттер, поставляемый javascript, в событие pageinit без успеха. Например

$(document).on("pageinit", function(event) { 
    // Inserted twitter js here  
}); 

Любые идеи о том, как получить щебетать встроенные временные рамки, чтобы надежно появляться в JQuery мобильных приложений (без использования кода сервера)?

ответ

0

У меня есть встроенный твиттер, связанный с событием 'pagecreate'. Как так:

// #twitter is my page that I have the embed in 
$('#twitter').live('pagecreate',function(event){ 
    //twitter js here 
}); 
+0

Спасибо за ответ, но это не сработало для меня. Событие pagecreate было вызвано при первой загрузке страницы, но на последующих дисплеях это не так. – bludginozzie

1

Я в конечном итоге выяснить это. Твиттер для веб-сайтов api добавляет объект window.twttr, и этот объект имеет метод загрузки, который сканирует dom и устанавливает виджеты. Это означает, что мы можем легко проверить, загружен ли widget.js, и если это так, и если не загрузите его. Итоговый код выглядит примерно так:

$(document).bind('pageinit', function() { 
    if (window.twttr) { 
     twttr.widgets.load(); 
    } else { 
     // Insert twitter supplied widget js here 
    } 
});