编辑 - 8-15
要优化我的问题:
1.。)我可以使用localStorage在同一个应用程序中的两个webview之间传递数据吗?如果没有更好的解决方案?
2.。)我可以在远程域和本地android文件之间使用localStorage吗?如果没有更好的解决方案?
3.。)localStorage是否使用cookies?这与DOM适配器相同吗?我看过很多解释,有些似乎是矛盾的,所以我觉得我对实际发生的事情感到有些困惑。
我正在使用phonegap和apppresser创建移动应用程序。从本质上讲,它只是一个webview,我有两个版本,在线和离线。在线版本发送到www / index.html,然后将其重定向到我的实时网站。离线版本是assets / offline.html,我将使其看起来与在线版本类似,因此除了不能再进行在线功能外,用户并不知道任何事情本质上是不同的。
长话短说,我正在尝试使用草坪椅,因为我只看到了很好的评论,看起来非常灵活。让我用草坪椅作为前言似乎有用。我已经尝试了dom适配器,可以在在线版本的页面之间成功设置和检索数据,但似乎无法在离线版本上检索。我用来成功执行此操作的代码如下:
var store = new Lawnchair({
adapter: "dom",
name: "testing"
}, function(store) {
});
store.exists('events', function(available){
var preStr = "";
if(available){
preStr = "key is already available, ";
}else{
preStr = "key not available, ";
}
// create an object
var me = <?php echo json_encode($json_posts); ?>;
// save it
store.save(me);
// access it later... even after app restart!
store.get('events', function(me) {
$("#data").html(preStr + JSON.stringify(me));
alert(preStr + JSON.stringify(me));
});
});
我对没有保存任何数据的离线版本使用了略有不同的变体。所以它归结为几个问题:
1。)草坪椅是否允许我在webview中的域之间保存相同移动应用程序的数据?我不确定domiain offline.html会是什么,但技术上index.html(在线版本)是在mydomain.com上设置数据
2。)在这种情况下我是否应该使用更好的技术来保存html文件和/或域之间的数据?
答案 0 :(得分:0)
目前,这是我找到的最佳解决方案。为了重新迭代,我使用phonegap和apppresser,这使我可以让我的wordpress网站显示为移动应用程序。
在index.html中,我的代码如下:
<script src="jquery-2.0.2.js"></script>
<script src="lawnchair-0.6.1.js"></script>
<script type="text/javascript">
function checkNetConnection(){
var xhr = new XMLHttpRequest();
var file = "http://example.com";
var r = Math.round(Math.random() * 10000);
xhr.open('HEAD', file + "?subins=" + r, false);
try {
xhr.send();
if (xhr.status >= 200 && xhr.status < 304) {
return true;
} else {
return false;
}
} catch (e) {
return false;
}
}
if(checkNetConnection()){
var store = new Lawnchair({
adapter: "dom",
name: "cachedvalues"
}, function(store) {
});
// create an object
$.get("http://example.com/api/get_posts/?post_type=event&ondate=2014-09-14",function(data){
data.key = "events";
alert(data);
alert(data.key);
store.save(data);
window.location = "http://example.com?appp=1";
});
}else{
var store = new Lawnchair({
adapter: "dom",
name: "cachedvalues"
}, function(store) {
});
store.exists('events', function(available){
var preStr = "";
if(available){
preStr = "key is already available, ";
}else{
preStr = "key not available, ";
}
// access it later... even after app restart!
store.get('events', function(me) {
alert(preStr + JSON.stringify(me));
});
});
}
</script>
还有解释:
function checkNetConnection检查互联网连接。如果它存在,我使用$ .get ping我的wordpress网站,我在我的网站上安装了JSON API插件。我使用JSON API检索帖子数据并在应用程序在线时缓存它,因为这些数据通常似乎在应用程序重新启动之间持续存在(这使我相信答案为&#34;我可以在同一个应用程序中的两个Web视图之间传递数据使用localStorage?&#34;和&#34;我可以在远程域和本地android文件之间使用localStorage吗?&#34;不是。)
如果应用程序不在线,那么我只是尝试获取已经缓存的数据。
<强>优点:强>
<强>缺点:强>
这是我的自定义解决方案。它将适用于我公司的需求。我不能保证它会对其他人有同样的作用。