1

我正在尝试为能够离线运行的 Web 应用程序找到解决方案。

我对 iOS 和 Android 以及 Blackberry OS 6.0 及更高版本很好,因为所有这些都支持 localStorage。我可以让某些低于 OS 0.6 的 Blackberrys 使用 openDatabase 在本地存储信息,但我仍然无法找到一种方法使以下内容能够离线存储数据 -

·黑莓曲线8900

· 黑莓曲线

· 黑莓加粗9700

我不介意我最终是如何做到的,并且非常乐意为这些 BB 使用完全不同的设置。

基本上我需要做的就是以任何格式存储数据。我不介意必须使用键值或更强大的 sqllite 或类似的。我简直被难住了!

到目前为止,这是我简单检测设备是否接受本地存储​​的内容 -

<!DOCTYPE html> 
<html>  
  <head>
    <title>Local Storage Test</title>
    <script src="http://www.google.com/jsapi"></script>
    <script type="text/javascript">
      google.load("jquery", "1.4.1");
    </script>
    <script type="text/javascript">

    function testSupport()
    {
        if (localStorage)
            document.getElementById('content').innerHTML = '<h2 class=\"yes\"><img src=\"http://jealousdesigns.com/webapps/test/tick.png\" /> Yep! This one works (with localStorage)!</h2>';


        if (openDatabase)
            document.getElementById('content').innerHTML = document.getElementById('content').innerHTML + '<h2 class=\"yes\"><img src=\"http://jealousdesigns.com/webapps/test/tick.png\" /> Yep! This one works (with database)!</h2>';
    }        

    </script>
    <style type="text/css">
        body{
            font-size: 20px;
            background: #eee;
            color: #666;
        }
        h2{
            border-radius: 10px;
            -webkit-border-radius: 10px;
            -moz-border-radius: 10px;
            width: 100%;
            background: white;
            text-align: center;
            padding: 20px 0;
        }
        .yes{
            border: 1px solid green;
        }
        .no{
            border: 1px solid red;
        }
    </style>
  </head>
  <body>
    <div id="content">
        <h2 class="no"><img src="http://jealousdesigns.com/webapps/test/x.png" /> Boo. This one doesn't work</h2>
    </div>
    <script>
        testSupport();
    </script>   
  </body>
</html> 

实际上,所有这些都是测试 localStorage 和 openDatabase 并显示一条确认消息。

对于操作系统低于 6.0 的黑莓设备,我真的很感激。

谢谢!

4

2 回答 2

3

我知道低于 OS6 的设备不支持原生 HTML5。我也知道,根据您所说的,您可以在一些低于 OS6 的设备上使用它,由此我可以推断您正在使用一个软件层,该软件层正在为您访问本机 API。

您可以尝试将此框架换成 webworks + javascript 工具包。 http://supportforums.blackberry.com/t5/Web-and-WebWorks-Development/Supporting-Gears-using-HTML5-in-BlackBerry-WebWorks-applications/ta-p/557280

我假设这不是您已经在使用的,因为它没有 localstore api。它确实有一个数据库 api,它应该具有良好的跨设备支持,因为它是由 RIM 提供的。

为什么我认为这个问题发生在某些 OS5 手机上而不是其他手机上?

只有具有 eMMC 内存的设备才能将 SQLite 数据库存储在其内部内存中。这不包括9700,我猜你提到的其他人。因此,如果 SDCard 存在,您始终可以选择使用它。

BB 存储概述

这是 OS5 存储概述文档的链接,这是我见过的最好的介绍:

http://www.blackberry.com/developers/docs/5.0.0api/data_storage-summary.html

选项:

  • 文件和文件夹
  • SQLite
  • 持久存储
  • 运行时存储
  • MIDP RMS 存储(记录存储)

eMMC 内存参考 = Mark Sohm,BlackBerry Development Advisor http://supportforums.blackberry.com/t5/Java-Development/Sqlite-reading-database-from-device-storage-compatibility-list/td-p/764303/highlight/真/页/2

这里还给出了内部存储器类型的解释:http: //www.blackberry.com/developers/docs/5.0.0api/data_storage-summary.html#DS_FileSystem

于 2011-09-06T15:25:35.300 回答
1

您好我找到了两种算法来添加对旧浏览器的支持,它在 window 对象中定义属性 localStorage,并使用浏览器的缓存

https://developer.mozilla.org/en/DOM/Storage#localStorage

我会检查它

于 2012-02-08T19:51:43.053 回答