【问题标题】:PhoneGap javascript localStorage AndroidPhoneGap javascript localStorage Android
【发布时间】:2013-09-22 02:59:12
【问题描述】:

所以我尝试使用以下方法在 PhoneGap 应用程序中对此进行测试: http://inflagrantedelicto.memoryspiral.com/2013/05/phonegap-saving-arrays-in-local-storage/

当代码到达以下位置时,我不断收到参考错误: window.localStorage.setItemwindow.localStorage.setArray

JS:

Storage.prototype.setArray = function (key,obj) {
    return this.setItem(key, JSON.stringify(obj));
}
Storage.prototype.getArray = function (key) {
    return JSON.parse(this.getItem(key));
}

var storedSettings = window.localStorage.getArray('mysettings');

alert('storedSettings = ' + storedSettings);
  if (storedSettings === null) {
      var settings = newArray();
  } else {
      var settings = storedSettings;
  }

$(document).ready(function() {



$('input[type=submit]').click(function() {
    alert('sup');
    var xsize = $('input[name=rads]:checked').attr('id');
    var xfirstname = $('#fname').val();
    var xsex = $('input[name=mf]:checked').attr('id');

    settings.push({'size':xsize, 'fname':xfirstname, 'sex':xsex});
    window.localStorage.setItem('mysettings', settings);
    window.localStorage.setArray('mysettings', settings);
    alert('settings:\n#1: ' + settings[0] + '\n#2: ' + settings[1] + '\n#3: ' + settings[2]); 
});



});

HTML:

<label for='small'>small</label>
<input type='radio' name='rads' id='small' checked='checked'/><br/>

<label for='medium'>medium</label>
<input type='radio' name='rads' id='medium'/><br/>

<label for='large'>large</label>
<input type='radio' name='rads' id='large'/>
<br/>
<br/>

<input type='text' id='fname' size='10'/>
<br/>

<label for='male'>M:</label>
<input type='checkbox' id='male' name='mf' checked='checked'/>
<br/>

<label for='female'>F:</label>
<input type='checkbox' id='female' name='mf'/>
<br/>
<br/>

<input type='submit' onclick='goset();' value='Save Settings'/>

【问题讨论】:

    标签: javascript android database cordova local-storage


    【解决方案1】:

    经过一番研究,在 PhoneGap 中默认启用 localStorage。

    我认为你得到的参考错误是由于这一行:

    var storedSettings = window.localStorage.getArray('mysettings');
    

    在调用它之前尝试检查数组是否存在:

    if(window.localStorage.getArray('mysettings') !== undefined){
        var storedSettings = window.localStorage.getArray('mysettings');
    else{
        var storedSettings = [] /*default settings and/or empty*/
    }
    

    【讨论】:

    • 这会放在 MainActivity.java 文件下吗?
    • 我不熟悉 Java 或 Android 开发,但我认为这是正确的道路。
    • 嗯...我认为你在正确的轨道上我只是不知道如何实现它。我将我能做的添加到 java 文件中(没有错误),运行它,并立即强制关闭。
    • 尝试我在编辑中包含的内容,我在另一个与 phonegap 相关的问题中发现。
    • 忽略我最后的回答。 PhoneGap 默认在 webview 中启用 localStorage。您在 localStorage 中创建之前引用了该数组。
    猜你喜欢
    • 2012-04-02
    • 2012-09-09
    • 1970-01-01
    • 2012-07-08
    • 2012-01-16
    • 2012-03-28
    • 1970-01-01
    • 2023-03-20
    • 2011-11-19
    相关资源
    最近更新 更多