QML是否可以使用Facebook Javascript SDK加载数据?

QML是否可以使用Facebook Javascript SDK加载数据?,facebook,qt,facebook-graph-api,qml,facebook-javascript-sdk,Facebook,Qt,Facebook Graph Api,Qml,Facebook Javascript Sdk,我试图让QML使用FB Javascript SDK与FB graph API交互 我正在WebView元素中加载此HTML: html: "<script>console.log(\"This is in WebKit!\"); window.FB.init();</script>" 但只要调用window.FB.init(),它就会抛出一个错误: ReferenceError: Can't find variable: window 我使用的另一种方法是使用Co

我试图让QML使用FB Javascript SDK与FB graph API交互

我正在WebView元素中加载此HTML:

 html: "<script>console.log(\"This is in WebKit!\"); window.FB.init();</script>"
但只要调用window.FB.init(),它就会抛出一个错误:

ReferenceError: Can't find variable: window
我使用的另一种方法是使用Component.onComplete加载FB.init()函数

     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();
     }

}
导入QtQuick 1.0
将“fb.js”作为fb导入
导入QtWebKit 1.0
长方形{
宽度:360
身高:360
正文{
文字:“你好,世界”
anchors.centerIn:父对象
}
鼠耳{
锚定。填充:父级
}
网络视图{
首选宽度:490
首选身高:400
比例:0.5
平滑:假
javaScriptWindowObjects:QtObject{
WebView.windowObjectName:“FB”
}
html:“console.log(\“这在WebKit中!\”);window.FB.init()
函数启动函数(){
log(“此调用在QML中!”);
FB.init({
appId:'xxxxxxxxxx',cookie:true,
状态:正确
});
控制台日志(FB);
}
Component.onCompleted:startupFunction();
}
}

我认为问题在于您没有在window对象中定义任何内容,您的
QtObject
只包含
windowObjectName
,但没有函数或变量
windowObjectName
实际上只是新对象的名称,qml不使用该对象的导入

根据研究,它应该是这样的:

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

     // the stuff you want in that window-object goes here:
     function init() {
         console.log("FB.init");
     }
   }
}
WebView {
   javaScriptWindowObjects: QtObject {
     WebView.windowObjectName: "FB"

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