传递与传播在Android Webview中重温localStorage值

时间:2018-01-15 07:04:50

标签: javascript android html5 webview

背景

  1. 在android Webview中:

    • 本地保存的Html文件。
  2. 用户在线时

    • 调用URL并从网站加载Page A
    • 某些数据存储在localStorage('X')上的Page A
  3. 当用户离线时

    • 显示Html Page B(本地保存)。
    • Page BlocalStorage('X')获取数据并存储在localStorage('Y')
    • Page B在JavaScript中对localStorage('Y')执行操作。
  4. 当用户再次在线时

    • Page A从localStorage('Y')获取数据并存储在localStorage('X')
  5. 问题

    localStorage('X')值未传递给localStorage('Y')&反之亦然。

    寻找:

    如何将localStorage价值从网站传递到本地HTML文件&反之亦然

1 个答案:

答案 0 :(得分:1)

您无法使用localStorage在两个域之间共享数据。

用于跨域共享数据的方法之一是使用postMessage API。除了MDN链接之外,您还可以在此处找到更多详细信息:How do you use window.postMessage across domains?

在您的情况下,您可能需要进行以下更改:

  • 用户在线时

    • 已开启本地保存的Page C
    • Page C在iframe元素中打开Page A.
    • 每当Page A需要将任何数据保存到localStorage时,它都会通过postMessage将数据发送到父网页,即Page C。反过来Page C可以将数据保存到localStorage。
  • 当用户离线时

    • 显示Html Page B(本地保存)。
    • 它可以引用localStorage存储的Page C中的数据,因为两者都是脱机打开的。