2013-06-26 78 views
0

這些天我試圖從Adobe的技術傳播者Andrew Trice運行現有的代碼。這個概念是將database.com數據庫連接到電話差距應用程序。這裏是與源代碼中的教程:問題與Adobe展示的現有手機差距代碼

http://wiki.developerforce.com/page/Building_PhoneGap_Mobile_Applications_Powered_by_Database.com

問題:

後Childbrowser成功安裝有代碼中的一個特定的錯誤:

未捕獲的錯誤類型:不能讀屬性「ChildBrowser」未定義在文件:///android_asset/www/js/salesforceWrapper.js:17

這裏是完整的代碼:(我把註釋放在錯誤的行中)

function SalesforceWrapper() { 
    /* AUTHENTICATION PARAMETERS */ 
    this.loginUrl = 'https://login.salesforce.com/'; 
    this.clientId = '3MVG99qusVZJwhsmjZIlEaUsFRnadOib8Kv_MPwooFMEi.XpChrZ5cVEcKU_7NR1zfQjjmdHI7wMARXnLlgku'; 
    this.redirectUri = 'https://login.salesforce.com/services/oauth2/success'; 

    /* CLASS VARIABLES */ 
    this.cb = undefined;  //ChildBrowser in PhoneGap 
    this.client = undefined; //forceTk client instance 

    this.init(); 
} 

SalesforceWrapper.prototype.init = function() { 
    this.client = new forcetk.Client(this.clientId, this.loginUrl); 
// line 17 with the error 
    this.cb = window.plugins.childBrowser; 
} 

SalesforceWrapper.prototype.login = function (successCallback) { 
    this.loginSuccess = successCallback; 
    var self = this; 
    self.cb.onLocationChange = function (loc) {    
     if (loc.search(self.redirectUri) >= 0) { 
      self.cb.close(); 
      self.sessionCallback(unescape(loc)); 
     } 
    }; 
    self.cb.showWebPage(self.getAuthorizeUrl(self.loginUrl, self.clientId, self.redirectUri)); 
} 

SalesforceWrapper.prototype.getAuthorizeUrl = function (loginUrl, clientId, redirectUri) { 
    return loginUrl + 'services/oauth2/authorize?display=touch' + '&response_type=token&client_id=' + escape(clientId) + '&redirect_uri=' + escape(redirectUri); 
} 

SalesforceWrapper.prototype.sessionCallback = function(loc) { var oauthResponse = {}; 

    var fragment = loc.split("#")[1]; 

    if (fragment) { 
     var nvps = fragment.split('&'); 
     for (var nvp in nvps) { 
      var parts = nvps[nvp].split('='); 
      oauthResponse[parts[0]] = unescape(parts[1]); 
     } 
    } 

    if (typeof oauthResponse === 'undefined' || typeof oauthResponse['access_token'] === 'undefined') { 
     console.log("error"); 
    } else { 
     this.client.setSessionToken(oauthResponse.access_token, null, oauthResponse.instance_url); 
     if (this.loginSuccess) { 
      this.loginSuccess(); 
     } 
    } 
    this.loginSuccess = undefined; 
} 

ADOBE的手機間隙是一個危險的工具,但它仍然很難操作。

謝謝APRIORI您的可能的建議。在這一點上,我不希望得到答案。我知道這裏有一個很大的距離...

回答

0

好人的問題是由於index.html引起的,其中childbrowser.js的引用位於不同的文件夾中。

它是:代替

<script type="text/javascript" src="js/libs/ChildBrowser.js"></script> 

<script type="text/javascript" src="js/ChildBrowser.js"></script> 

所以人們要小心!

現在我的問題還有其他的功能,但我認爲它有點類似。

謝謝大家!

如果您知道某些事情,請嘗試回答。