2013-07-25 37 views
2

我正在使用Facebook Connect插件與Cordova/Phonegap在這裏解釋(https://github.com/phonegap-build/FacebookConnect)。我已經包含了我的Facebook SDK js文件,還包括FB Cordova js文件,我沒有包含Cordova.js文件本身,因爲它似乎已經包含在Ripple Emulator(Testing with Ripple)中,當我調用登錄方法在Facebook的JS文件,我得到的try-catch塊的異常:「不能調用方法'的未定義」Cordova:不能調用未定義的方法'exec'

EXEC這裏是我的代碼

document.addEventListener('deviceready', function() { 
            try { 
            alert('Device is ready! Make sure you set your app_id below this alert.'); 
            FB.init({ appId: "appid", nativeInterface: CDV.FB, useCachedDialogs: false }); 
            document.getElementById('data').innerHTML = ""; 
            } catch (e) { 
            alert(e); 
            } 
            }, false); 

從Chrome瀏覽器開發工具snaphot,我在調用的函數中看到調用堆棧[native code],這可能是原因,這是否意味着我必須在設備上測試?

任何建議,將不勝感激。

回答

3

當您使用Ripple模擬器測試頁面時,應該包含cordova.js文件。紋波仿真器僅模擬移動環境,您仍然需要具有定義Cordova對象的cordova.js文件。

Phonegap插件使用Cordova.exec從JavaScript調用本地方法。您的Facebook插件也將使用該方法進行本地方法調用。還要確保在頁面中的facebook插件js文件之前包含'cordova.js'。

+0

Cordova調用本地方法,這是爲什麼我在Ripple模擬器中得到這個錯誤的原因,這是否意味着Ripple不能提供硫原生方法 – kolexinfos

+0

我不這麼認爲。本機通話全部由Ripple模擬。插件js將不得不在'Cordova'對象上調用exec方法。但是,如果cordova.js在此之前不包含,那麼'Cordova'將會是未定義的,因此您將獲得未定義的'Can not call method'exec'。 – Tamillharasan

+0

你是一個正確的,似乎有與科爾多瓦/ phonegap環境使用正確的版本(2.0.0)在Ripple不兼容問題解決了問題 – kolexinfos

相關問題