2011-08-17 19 views
5

मैं एफबी जावास्क्रिप्ट एसडीके का उपयोग कर एफबी ग्राफ एपीआई के साथ बातचीत करने के लिए क्यूएमएल प्राप्त करने की कोशिश कर रहा हूं।क्या कोई तरीका है QML फेसबुक जावास्क्रिप्ट एसडीके का उपयोग कर डेटा लोड कर सकता है?

मैं एक WebView तत्व के अंदर इस HTML लोड हो रहा हूँ:

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

और मैं भी एक जे एस खिड़की वस्तु WebView के अंदर अमेरिकन प्लान नामित बना लिया है: के रूप में

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

लेकिन जैसे ही

ReferenceError: Can't find variable: window 

एक और दृष्टिकोण मैं उपयोग कर रहा हूँ अमेरिकन प्लान लोड है: window.FB.init() कहा जाता है, यह एक त्रुटि बाहर फेंक

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

यहाँ है पूरा QML: .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(); 

लेकिन का उपयोग कर समारोह मैं के रूप में त्रुटि मिलती है

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"); 
    } 
    } 
} 
संबंधित मुद्दे