2011-09-29 23 views
1

我在我的頭標記定義一個函數<script> functionX(a,b,c) ....</script>GWT <script>標籤不能正常加載

至極調用一些第三方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 widjet來調用它:

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>"); 

但是,它沒有正確執行。任何建議都會非常有用。

+0

這個[問題](http://stackoverflow.com/questions/7057312/javascript-in-htmlpanel/7062184#7062184)可能是的幫助。 – pistolPanties

回答

3

更慣用使用JSNI調用外部功能:

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

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

謝謝。這確實有效,但它只是第一次。當評論插件第一次出現時它是完美的,但是如果我畫出其他東西(例如,如果我改變頁面動態),我回到評論,它不會重繪。它只在第一次運作。 – fernandohur

+0

原因是,Facebook的腳本解析和渲染僅在第一次加載它XFBML標記。所以,如果你改變頁面dynamicaly,你得到一些新的XFBML的標記,你有()再次解析的頁面,使用功能FB.XFBML.parse。見http://developers.facebook.com/docs/reference/javascript/FB.XFBML.parse/ – olivierlemasle