【问题标题】:twitter widget only load first time in webapp ajax page?twitter 小部件仅在 webapp ajax 页面中首次加载?
【发布时间】:2012-12-23 10:20:31
【问题描述】:

我正在尝试在我的 ajax 加载页面中加载 twitter 小部件 api。

我尝试以几种不同的方式加载脚本,每次运行时都会收到警报,但脚本本身却没有。

所以我第一次加载页面时,脚本正在运行,但是如果我返回菜单并返回此页面,那么它不会加载它?

这是 ajax 加载的页面。

<div id="twitterwid">

<a class="twitter-timeline" width="320" height="500" href="https://twitter.com/my account" data-widget-id="my widget id number">Loading tweets by @me</a>
<script>

alert("alert is working");

!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>

<div>

任何意见表示赞赏,谢谢。

【问题讨论】:

    标签: twitter widget


    【解决方案1】:

    您所要做的就是:调用页面上小部件标签的重新渲染:

    twttr.widgets.load()
    

    Similar question on Twitter Dev Channel

    注意:内联脚本不会在 AJAX 加载时执行。 请参阅:此 SO Q&A 以获取解决方案。

    【讨论】:

    • 谢谢 Ujjwal,也许你可以帮忙做点别的事情?小部件在 Web 应用程序中滚动非常糟糕,我尝试在周围的 div 和 iframe 上设置 webkit-overflow-scrolling,但它没有帮助。你知道如何改善滚动吗?
    • 非常感谢 Ujjwal!
    • 为什么我会得到这个? Uncaught ReferenceError: twttr is not defined
    • @prime 试试这个:twttr.ready(function (twttr) { twttr.widgets.load();});
    【解决方案2】:

    先添加:

    <script>window.twttr = (function(d, s, id) {
      var js, fjs = d.getElementsByTagName(s)[0],
        t = window.twttr || {};
      if (d.getElementById(id)) return t;
      js = d.createElement(s);
      js.id = id;
      js.src = "https://platform.twitter.com/widgets.js";
      fjs.parentNode.insertBefore(js, fjs);
    
      t._e = [];
      t.ready = function(f) {
        t._e.push(f);
      };
    
      return t;
    }(document, "script", "twitter-wjs"));</script>
    

    所以你可以使用:

    twttr.widgets.load()
    

    【讨论】:

      猜你喜欢
      • 2012-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-16
      • 2021-01-02
      • 1970-01-01
      • 1970-01-01
      • 2010-09-08
      相关资源
      最近更新 更多