6

我正在尝试在phonegap中进行应用。我制作了一个 custom.js javascript 文件,它具有一些功能

function func1(){....}
function func2(){....}

所有这些函数都将在两个不同的 html 页面中使用。在第一个 HTML 页面中,我在 func1 中使用了一个变量,它正在执行一些操作。在第二页中,我想以他在func1中的状态在func2中访问它。但我做不到。我在两个 html 页面中都包含 custom.js。我读过 javascript 文件在多个页面中使用时会重置/刷新。谁能给我一个例子,说明如何在 func1 中保存变量的状态,然后在他处于 func1 的状态下访问 func2 中的变量(在不同的 HTML 页面中)。我还阅读了有关视图状态的信息。但这对我也不起作用。请帮忙...

4

3 回答 3

10

将值存储在localstorage中并从那里引用它。

function first() {
    localStorage.setItem('myItem', "something you want to store");
}

function second() {
    myValue = null;
    if (localStorage.getItem('myItem')) {
        myValue = localStorage.getItem('myItem');
    }
}
于 2012-10-15T12:35:43.850 回答
1

在现代浏览器中,您可以使用localStorage

var get = function (key) {
  return window.localStorage ? window.localStorage[key] : null;
}

var put = function (key, value) {
  if (window.localStorage) {
    window.localStorage[key] = value;
  }
}

使用 get 和 put 将值存储到大多数现代浏览器的本地存储中。

于 2012-10-15T12:34:34.497 回答
0

更容易和首选的方法是window.localStorage用于存储站点范围的变量。为了适应旧版浏览器,您可以考虑将cookie作为辅助存储位置。

// credits to http://mathiasbynens.be/notes/localstorage-pattern
var hasStorage = (function() {
      try {
        localStorage.setItem(mod, mod);
        localStorage.removeItem(mod);
        return true;
      } catch(e) {
        return false;
      }
    }());

function setSiteWideValue(_key, _value) {
    if(hasStorage) {
        localStorage[_key] = _value;
    }
    else {
        document.cookie = _key+'='+_value+'; expires=<date-here>; path=/; ;domain=<.yourdomain>';
    }
}

function getSiteWideValue(_key) {
    if(hasStorage) {
        return localStorage[_key];
    }
    else {
        if(document.cookie.indexOf(_key+'=') != -1) {
            return document.cookie.split(_key+'=')[1].split(';')[0];
        }
    }
}
于 2012-10-15T12:37:32.673 回答