Cordova - iframe中的localStorage在应用程序重启时被清除

时间:2016-12-26 18:09:24

标签: cordova web local-storage phonegap-plugins cordova-plugins

index.html文件目前看起来像这样:

<!DOCTYPE html><html><head style="overflow: hidden; margin:0; padding:0;border:0;">
    <meta charset='UTF-8'/>

    <meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src * 'unsafe-inline' 'unsafe-eval'" />
</head>
    <body style="overflow: hidden; margin:0; padding:0; width:100vw; height:100vh;border:0;">
        <iframe src="http://domain.com" style="overflow: hidden; margin:0; padding:0; width:100vw; height:100vh;border:0;"></iframe>
    </body>

    <script type=text/javascript>
        alert(window.localStorage.getItem("aaa"));
        window.localStorage.setItem("aaa", "111")
    </script>
</html>

脚本中的提醒会在应用重新启动时保持

然而,在应用程序重新启动时,localStorage使用iframe,清除,因此使用iframe不等于伪造意图。

1 个答案:

答案 0 :(得分:1)

您的应用的localStorage不会与远程域共享,因为localStorage只是特定于域的,因此您需要使用其他技术来传递任何共享数据。以下是几种方法:

  1. 将值作为查询字符串参数传递给iframe网址。您可以随时将iframe附加到DOM等,或者在移动到SPA时先将localStorage值预先加载到其他地方。

  2. 使用更常见的方法让您的父网页向iframe发送postMessage,并向iframe添加代码,以收听message事件。

  3. 有关如何发送/接收postMessage的其他详细信息:

    https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage