我们有一个iPhone应用程序,它本质上是一个封装在应用程序中的网站。这个应用程序从本地磁盘加载HTML和JS文件,并在JS中完成交互。
然而,在iOS 4.2中,JS在打开数据库时已经开始接收“SECURITY_ERR:DOM Exception 18”,因此,我们的应用根本不起作用。完全相同的文件在以前版本的iOS中运行良好,并且从Web服务器加载时工作正常。
有没有办法配置iOS以允许在本地文件中运行的JS访问数据库?
谢谢!
凯文
答案 0 :(得分:1)
我相信你超过了数据库的5mb限制大小。
至少这是我能找到复制该错误信息的唯一方法。
浏览器通常会阻止 使用失控的Web应用程序 设置过多的本地资源 限制每个网站的大小 数据库。当数据库改变时 导致数据库超过该数据库 限制,通知用户并询问 允许数据库的权限 进一步发展。
如果你知道你将成为 用很多东西填充数据库 内容,你应该指定一个充足的 这里的大小。通过这样做,用户是 只被要求许可一次 创建数据库而不是每个 随着数据库的增长,几兆字节。
浏览器可能会设置限制方式 你可以为此指定一个大的值 字段,但这些限制的细节 还没有完全明确。
答案 1 :(得分:1)
我想我应该回答这个问题,因为我最终得到Apple Developer Support的回答,承认这是iOS4中的一个错误。
具体问题是使用[webView loadData ...]加载webView时。以这种方式加载时,webKit不允许访问数据库。如果将同一个调用更改为使用[webView loadRequest ...],则允许使用数据库。
这里有示例代码来演示此问题: http://code.google.com/p/iui/source/browse/sandbox/hybrid/HybridiUI/Classes/HybridiUIAppDelegate.m
顺便说一下,谷歌Chrome中存在同样的错误,它也使用了webKit。从Chrome中的本地文件加载网站时,禁止使用数据库和AJAX调用,但是从Web服务器加载时,允许这样做。