问题标签 [jstorage]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
490 浏览

javascript - jScript 调试器错误,在简单脚本中

我正在处理一个本地 html 文件,存储在 Win7 机器上并在 IE 9 中打开。这个 html 文件使用 javascript 和 jStorage。

但是,当我运行时,我收到错误“SCRIPT5007:无法获取属性'set'的值:对象为空或未定义。” 此错误指向该语句$.jStorage.set("Key", "Hello");

我究竟做错了什么?我已经尽可能地简化了 html 和 javascript,以缩小范围。

这是html:

...而且,这是脚本(在 html 中引用为“backlog.js”):

作为旁注,我已经阅读了关于 SO 的其他问题,例如这里,但似乎没有什么可以解释这一点。参考这里的jStorage 用法,一切似乎都井井有条。由于这个 SO answer,我最初被指向 jStorage 。

0 投票
2 回答
849 浏览

javascript - 使用网页在桌面上存储数据的选项

目标:
总而言之,我正在尝试替换 Excel 电子表格。我正在创建一个将在 IE9 中运行但不连接到 Internet 或 Intranet 的应用程序(我知道,我知道。请耐心等待。如果您好奇,请阅读下面的更多信息)。它需要对每天变化的一组数据使用 CRUD(创建、读取、更新和删除)方法。即使关闭浏览器,数据集也必须保持不变。

问题:
有哪些选项可以使用 javascript 和 html 将数据存储在访问网页的本地计算机上?我在工作中这样做,所以不会有服务器端。虽然我可以下载 javascript 插件,但我也无法在计算机上安装任何软件。该网页将使用 Win 7 和 IE9 从计算机上的文件加载。

背景:
这值得解释。我使用 Excel 电子表格来跟踪一组每天都在变化的数据。我正在学习 HTML 和 javascript,我可以创建一个更好(且更易于使用)的解决方案作为网页。我可以创建 UI / UX,但我很难弄清楚如何将数据存储在本地计算机上。有什么好的建议吗?

尝试:
不幸的是,似乎localStorage 不是一个选项。我正在尝试使用 jStorage,但我也在那里遇到了问题使用simpleStorage时遇到了一组类似的问题。

感谢您考虑,如果需要更多信息,或者我需要澄清一些事情,请告诉我。

附录:
Localstorage 和其他形式的 HTML5 存储不起作用。官方确实如此,但非官方却非常有问题。请参阅此处的博客文章,并在此处回答。无论哪种方式,使用以下简单代码:
HTML:

和 javascript(参考上面的“backlog_localstorage.js”):

...我收到以下错误:“SCRIPT5007:无法获取属性'setItem'的值:对象为空或未定义”在线localStorage.setItem("key1", "Hello");

0 投票
2 回答
104 浏览

javascript - JavaScript:序列化后保留方法

我被一个更大的 JavaScript 应用程序(使用 jQuery Mobile)困住了,其中大部分程序逻辑已经实现。现在我想向它添加序列化(使用一个名为 JStorage 的插件)。在此代码示例中,我将一个对象字符串化为 JSON,然后再次将其转换为一个对象(全部没有 JStorage),但是我添加到原始对象的方法会丢失,如下代码所示:

问题还有另一个限制:在代码中,我经常使用点运算符来调用函数,如test1.showLang()。我知道我可以添加一个像这样的“全局”函数,它适用于原件和副本:

但是随后我必须将对函数的每个现有调用从test1.showLang()更改为showLang(test1) - 在我的实际项目中 - 我必须在整个代码中执行数百次。那么有没有更简单的解决方案如何在序列化后在对象上使用现有函数?

0 投票
1 回答
248 浏览

javascript - 检查对象是否适合浏览器缓存

我有一个单页应用程序,它从服务器加载JSON数据文件并将其显示在客户端上。数据文件每天只更改一次,所以在获取它之后,我想将它缓存在客户端上。到目前为止,我一直在使用jStorage并且对整体结果感到满意。不过有一件事是有问题的:根据jStorage Browser 支持页面,缓存大小因浏览器而异。

所以我的问题是:我能否以某种方式找出是否jStorage能够存储我的所有数据?该jStorage网站本身并没有提供任何线索。

或者,由于我只存储一个大对象,我可以使用sizeOf之类的插件在保存之前检查对象大小,但我不知道这是否是一种可靠的方法。

0 投票
1 回答
165 浏览

javascript - 如何通过 Ember-CLI 将 jStorage(或其他外部 JS 库)与 Ember.js 一起使用

我在一个单独的 HTML 文件中有一个小的 Ember-App,一切正常,但由于它变得相当大,我开始将它移植到 Ember-CLI。大多数东西都可以很好地移植,但我仍在努力添加 JStorage:

https://github.com/andris9/jStorage

我不确定如何从一个普通的 JS Lib 开始,我通常会在使用它之前将其放入代码中。现在有了所有模块,我完全不知道从哪里开始寻找如何去做。

谁能指出我正确的方向如何使用这样的 JS 库?

我在它周围找到了一些主题,但没有找到任何工作路径。

这是我以前使用它的方式:

0 投票
0 回答
141 浏览

jquery - jStorage 在 Selenium 运行的 IE 中不起作用

我使用 jStorage 来同步 IE 中的选项卡。当我尝试使用 Selenium WebDriver 对其进行测试时,它不起作用。

所以,这行

确实在手动运行的 IE 和 Selenium 的 IE 中的一个选项卡中工作。

并且不适用于 Selenium IE 的不同选项卡。

0 投票
0 回答
492 浏览

android - 如何使用 webview (xwalkView) 在 android 应用程序中创建持久缓存?

我使用 jStorage.js 来管理 Web 应用程序中的本地存储。我在使用 Crosswalk 构建的 Web 视图中运行此 Web 应用程序。我启动应用程序并使用 jStorage 的设置功能填充本地存储。当我重新启动应用程序时,本地存储为空。有什么建议吗?

这是 XWalkView 的代码:

编辑1: 好的。问题是当我关闭应用程序时,android 会破坏缓存。所以。我的回答是:

如何在带有 webview (xwalkView) 的 android 应用程序中创建持久缓存?

0 投票
2 回答
2557 浏览

javascript - 如何在 Javascript cookie 中存储大数据

嗨,我是 Java Script 的新手,有一个场景我想在 javascript cookie 上存储一些数据。

问题是 javascript cookie 只能存储 4 KB 的数据。寻找替代品时,我发现了 jStorage 和 local-storage,但并非所有浏览器都支持这些。是否有相同的解决方法。

这是我正在使用的示例代码。

这里的问题是,如果我的答案比 cookie 存储失败。我必须存储相同的答案组。

任何帮助表示赞赏。

我看到的一些参考链接:相关链接

0 投票
1 回答
207 浏览

jquery - 这个 jStorage 对象有什么不同,为什么?

我正在一家电子商店工作,其中一个插入篮子的项目被插入名为BasketItemNumber_I[其中我是一个 int 并且所有其他项目的名称为 i++] 的 jStorage 键中。

例如:BasketItemNumber_1、BasketItemNumber_2 等。

现在,我的客户要求我添加一个输入,其中一个项目的件数将是,以便客户可以更改 int 而无需使用 + 1 和 - 1 函数。

假设我在篮子里有一件物品。当我在控制台中回显这个项目时,它看起来像这样:

更改前 Chrome 中的控制台回显

现在,目标是将对象的片段值更改为用户已写入输入的一个值,因此该项目有一个 onfocusout 函数,如下所示:

但是,每当我改变值时(这样这个函数就可以做到这一点)。BasketItemNumber_1 的输出如下所示:

更改后 Chrome 中的控制台回显

该项目不再列在篮子中,因为我必须用这部分代码检查它:(我知道我使用 eval,这是一种不好的做法,我计划稍后更改它,现在我需要完成证明概念,而不是实际产品)。

... 等等。

基本上,我没有看到任何项目,但我在控制台中看到“数组为空,正在跳过”。

我必须使用上面的逻辑,因为有时 BasketItems 是空的(在用户删除它们后,它们的空数组有时会保留在缓存中)因此我只想显示那些实际包含某些内容的数组。

因此我不得不问:是什么,如何以及为什么改变了对象的表示方式?

我看到不同之处在于它们在控制台中的输出方式,更具体地说是在 [] 和 {} 中,但我不明白是什么使这种改变成为可能以及如何进行:

我宁愿在块值更改后更改对象的表示方式以匹配它曾经拥有的格式,这样我就不必弄乱上面的 typeof 逻辑,因为还有其他依赖它的东西.

注意:还有一个 + 和 - 按钮,分别更改件值。

这些功能是:

他们完美地工作。通过写下来,我不知何故觉得原因在于我没有使用 jQuery 来处理我遇到问题的函数。

0 投票
1 回答
1610 浏览

angularjs - 让 Angular 与 Moodle 网络服务一起工作

我正在构建一个应用程序来从 Moodle Web 服务获取 Json 数据,并使用 AngularJs 在应用程序中显示数据。Moodle 网络服务上有多个功能,因此我需要在 Angular 应用程序中使用多个控制器。

我正在使用 Visual Studio 和 Cordova 编写应用程序。

我想出了一个解决方案,用于从 Moodle 获取令牌,使用 jstorage 存储它,并将其显示在单页移动应用程序的各个窗格上。

多亏了许多其他 StackOverflow 答案,我已经习惯了这个解决方案!

(这是“提出您的问题并自己回答”的帖子之一 - 但欢迎提供进一步的建议。)

另请参阅 -从移动应用程序使用 Moodle 进行身份验证