【问题标题】:GWT <script> tag not loading properlyGWT <script> 标签未正确加载
【发布时间】:2011-11-27 23:01:28
【问题描述】:

我在 head 标签中定义了一个函数&lt;script&gt; functionX(a,b,c) ....&lt;/script&gt;

调用一些第三方js。实际功能是这样的:

    <script>
    function fbc(d, s, id) 
    {     var js, fjs = d.getElementsByTagName(s)[0];
          if    (d.getElementById(id)) {return;}    
          js = d.createElement(s); js.id = id;      
          js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";  
          fjs.parentNode.insertBefore(js, fjs);   
    }
    </script>

稍后我想调用该函数。我通过以下方式使用 HTML 小部件来调用它:

    HTML html = new HTML();
    setHTML(
            "<script>"+
            "   fbcomment(document, 'script', 'facebook-jssdk');   "+
            "</script> "+  
            "<fb:comments width=\"600\" num_posts=\"2\" href=\"http://www.woojah.com\"></fb:comments>");

但是,它没有正确执行。任何建议都会非常有用。

【问题讨论】:

  • 这个question 可能会有所帮助。

标签: java javascript html facebook gwt


【解决方案1】:

使用JSNI调用外部函数更惯用:

native void facebookComment(Document d, String s, String id) /*-{
  fbc(d, s, id);
}-*/;

void myFunction() {
  facebookComment(Document.get(), "script", "facebook-jssdk");
}

【讨论】:

  • 谢谢。这确实有效,但它只在第一次有效。当评论插件第一次出现时它是完美的,但是如果我画了其他东西(例如,如果我动态更改页面),然后我回到评论,它不会重画。它只在第一次工作。
  • 原因是 Facebook 脚本仅在第一次加载时才解析和呈现 XFBML 标记。因此,如果您动态更改页面,您将获得一些新的 XFBML 标记,并且您必须使用函数 FB.XFBML.parse() 再次解析页面。见developers.facebook.com/docs/reference/javascript/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-17
  • 2019-06-01
  • 2017-07-26
相关资源
最近更新 更多