5

FB Javascript SDKを使用してQMLをFBグラフAPIとやりとりさせようとしています。Facebook Javascript SDKを使用してQMLがデータをロードできる方法はありますか?

私はWebViewの要素内に、このHTMLをロードしています:

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

と私はまたWebViewの内部FBという名前のJSウィンドウオブジェクト作成しました:

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

しかし、できるだけ早くをwindow.FB.init()が呼び出されると、エラーがスローされます:

ReferenceError: Can't find variable: window 

私が使用している別のアプローチはFBをロードすることです.INIT()関数は、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(); 

を使用してしかし、私はエラーを取得する:ここで

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が含まれていますが、関数やvarsは含まれていません。 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"); 
    } 
    } 
} 
関連する問題