Я пытаюсь заставить QML взаимодействовать с API-интерфейсом FB-графа с помощью FB Javascript SDK.
Я загружаю этот HTML-код внутри элемента WebView:
html: "<script>console.log(\"This is in WebKit!\"); window.FB.init();</script>"
итакже создал JS Window Object с именем FB внутри WebView:
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();
}
}