2011-08-17 10 views
5

QML'nin FB Javascript SDK'sı kullanılarak FB grafiği API ile etkileşime geçmeye çalışıyorum.QML'nin Facebook Javascript SDK'sını kullanarak veri yüklemesinin herhangi bir yolu var mı?

Bir WebView elemanı içinde bu HTML yükleme ediyorum:

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

ve ben de WebView'da içeride FB adlı bir JS Pencere Nesnesi oluşturduk: en kısa sürede

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

Ama

ReferenceError: Can't find variable: window 

kullanıyorum başka bir yaklaşım FB yük geçerli: window.FB.init() denir, bu bir hata dışarı atar İşte

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

olduğunu tam QML: 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(); 

Ama kullanarak .init() işlevi Ben hata alıyorum

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

} 

cevap

0

Sorunun düşünüyorum sen misin pencere nesnesinde hiçbir şey tanımlamıyor, QtObject sadece windowObjectName içeriyor, ancak işlev veya vars yok. windowObjectName gerçekten yeni nesnenin adıdır, qml bu nesne için "fb.js" -import'u kullanmaz.

docs göre, bu gibi bakmak gerekiyordu:

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

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