2011-08-17 22 views
5

我試圖讓QML使用FB Javascript SDK與FB圖形API交互。QML可以使用Facebook Javascript SDK加載數據嗎?

我加載網頁視圖元素中此HTML:

html: "<script>console.log(\"This is in WebKit!\"); window.FB.init();</script>" 

而且我還創建了一個名爲FB的網頁視圖內的JS窗口對象:

javaScriptWindowObjects: QtObject { 
      WebView.windowObjectName: "FB" 
     } 

但只要window.FB.init()被調用,它拋出一個錯誤:

ReferenceError: Can't find variable: window 

我使用的另一種方法是加載FB使用Component.onComplete

 function startupFunction() { 
     console.log("This call is in QML!"); 
     FB.init({ 
         appId:'XXXXXXXXXXXXX', cookie:true, 
         status:true 
         }); 
     console.log(FB); 
     } 
    Component.onCompleted: startupFunction(); 

不過的.init()函數,我得到的錯誤是:

TypeError: Result of expression 'FB.init' [undefined] is not a function 

下面是完整的QML:

import QtQuick 1.0 
import "fb.js" as FB 
import QtWebKit 1.0 
Rectangle { 
    width: 360 
    height: 360 
    Text { 
     text: "Hello World" 
     anchors.centerIn: parent 
    } 

    MouseArea { 
     anchors.fill: parent 

    } 
    WebView { 
     preferredWidth: 490 
     preferredHeight: 400 
     scale: 0.5 
     smooth: false 

     javaScriptWindowObjects: QtObject { 
        WebView.windowObjectName: "FB" 
       } 
     html: "<script>console.log(\"This is in WebKit!\"); window.FB.init();</script>" 

     function startupFunction() { 
      console.log("This call is in QML!"); 
      FB.init({ 
          appId:'xxxxxxxxxxxx', cookie:true, 
          status:true 
          }); 
      console.log(FB); 
      } 
     Component.onCompleted: startupFunction(); 
    } 

} 

回答

0

我認爲這個問題是你沒有在窗口對象中定義任何東西,你的QtObject只包含windowObjectName,但沒有函數或變量。 windowObjectName實際上只是新對象的名稱,qml不會爲該對象使用"fb.js" -import。

按照docs它應該是這樣的:

WebView { 
    javaScriptWindowObjects: QtObject { 
    WebView.windowObjectName: "FB" 

    // the stuff you want in that window-object goes here: 
    function init() { 
     console.log("FB.init"); 
    } 
    } 
} 
相關問題