2010-09-13 72 views
1

我正在嘗試製作我的第一個基於JS的adobe air應用程序。使用EncryptedLocalStore時出現Javascript錯誤

但我堅持一點。

這裏的,這是造成錯誤

var RunUrl = 'http://www.lilpirate.net'; 
    var firstRunUrl = 'http://www.netbloo.com'; 
    var snxApp = air.EncryptedLocalStore.getItem('snxApp'); 
    var semail = snxApp.readUTFBytes(snxApp.bytesAvailable); 
    if(semail!='786') { 
    data = new air.ByteArray(); 
    data.writeUTFBytes('786'); 
    air.EncryptedLocalStore.setItem('snxApp', data); 
    var snxUrlToLoad = firstRunUrl; 
    } 
    else 
    var snxUrlToLoad = RunUrl; 

當從ADL編譯它的代碼,它拋出的錯誤 -

TypeError: Result of expression 'snxApp' [null] is not an object.

幫助!

回答

0

您正在訪問屬性(bytesAvailablereadUTFBytes)的snxApp未檢查以確保它存在第一。如果你還沒有使用setItem來存儲那個名字的任何東西,它將是null

下面是它會如何看待與if指令的例子:

var snxApp = ...; 
var semail; 
if (snxApp !== null) { 
    semail = snxApp.readUTFBytes(snxApp.bytesAvailable); 
} 
... 
+0

沒錯。我通過使用try和catch函數來處理它。它現在很好用:-)謝謝! – kapeels 2010-09-14 13:42:36

+1

@KPL:try/catch的作品,但如果你在設置'semail'之前添加一個'if(snxApp!== null)'檢查,代碼可能會更清晰。 – 2010-09-14 14:17:21