Javascript window.openDatabase抛出类型错误:对象[Object DOMWindow]没有方法';openDatabase';安卓上

Javascript window.openDatabase抛出类型错误:对象[Object DOMWindow]没有方法';openDatabase';安卓上,javascript,android,sencha-touch-2,opendatabase,Javascript,Android,Sencha Touch 2,Opendatabase,我正在使用Sencha Touch 2.0.1,并试图通过以下方式打开SQLite数据库: var db = window.openDatabase("mydatabase", "1.0", "mydatabase", 2000000); 在iPhone/IOS模拟器上,这是可行的。在Android设备或模拟器上,我遇到一个异常: TypeError: Object[object DOMWindow] has no method 'openDatabase' 我正在使用Sencha构建本地应

我正在使用Sencha Touch 2.0.1,并试图通过以下方式打开SQLite数据库:

var db = window.openDatabase("mydatabase", "1.0", "mydatabase", 2000000);
在iPhone/IOS模拟器上,这是可行的。在Android设备或模拟器上,我遇到一个异常:

TypeError: Object[object DOMWindow] has no method 'openDatabase'
我正在使用Sencha构建本地应用程序(尽管我很快失去了信心…),所以我没有使用PhoneGap

Sencha的打包创建了AndroidManifest.xml文件,但我看不到为其设置的权限

android.permission.WRITE_EXTERNAL_STORAGE
我不确定这是否是问题所在

非常感谢您的帮助,因为这让我心烦意乱

编辑:这是JS-它是Sencha Touch生成的应用程序的一部分:

Ext.application({
name: 'MyApp',

requires: [
    'Ext.MessageBox'
],

views: ['Main'],

icon: {
    '57': 'resources/icons/Icon.png',
    '72': 'resources/icons/Icon~ipad.png',
    '114': 'resources/icons/Icon@2x.png',
    '144': 'resources/icons/Icon~ipad@2x.png'
},

isIconPrecomposed: true,

startupImage: {
    '320x460': 'resources/startup/320x460.jpg',
    '640x920': 'resources/startup/640x920.png',
    '768x1004': 'resources/startup/768x1004.png',
    '748x1024': 'resources/startup/748x1024.png',
    '1536x2008': 'resources/startup/1536x2008.png',
    '1496x2048': 'resources/startup/1496x2048.png'
},

launch: function() {
    // Destroy the #appLoadingIndicator element
    Ext.fly('appLoadingIndicator').destroy();

    // Initialize the main view
    Ext.Viewport.add(Ext.create('MyApp.view.Main'));
    //

    try {

        var db = window.openDatabase("mydatabase", "1.0", "mydatabase", 2000000);

        if ( !db ) {
            var m3 = new Ext.MessageBox(); 
            m3.alert("db test!", "openDatabase failed!");

        } else {
           var m3 = new Ext.MessageBox(); 
           m3.alert("db test!", "openDatabase ok!");
        }
    }
    catch(err){

        var m2 = new Ext.MessageBox(); 
        m2.alert("db test!", "exception caught: " + err.name + ":" + err.message);


    }

}

}))

看起来在您的环境中不可用。以下是一种简单的检查方法:

if (window.openDatabase) {
    // available
} else {
    // not available
}
离线SQL目前在Safari、Google Chrome和 iPhone和Palm的WebOS(适用于其应用程序和基于浏览器的应用程序) 内容)


这个问题有用吗?我看到了这一点,但我认为这是Java而不是Javascript(WebSettings=myWebView.getSettings();)。@Nerd这可以解释为什么他的DB调用会被阻止,但不能解释为什么
openDatabase
甚至不存在。我觉得错误在于所引用的
上下文。如果可以的话,你可以发布你的JS吗?我已经添加了代码片段-它是sencha touch生成的更广泛应用程序的一部分(openDatabase调用是我添加的)。如果我在浏览器(Chrome)中运行应用程序,就可以了(因为它可以打开数据库)。我非常确定sqlite在Android中是可用的——我认为问题更多的在于Sencha。