IndexedDB的jQuery移动页面导航问题

时间:2014-12-16 15:52:09

标签: jquery-mobile navigation indexeddb

让我们拥有一个包含两个页面的简单jQuery移动应用程序。像这样的东西:

<body>
 <div data-role="page" id="page1">
  <div role="main" class="ui-content">
   <a href="#page2">Page 2</a>
  </div>
 </div>
 <div data-role="page" id="page2">
  <div role="main" class="ui-content">
   <a href="#page1">Page 1</a>
  </div>
 </div>
</body>

现在,当我在第1页上创建一个IndexedDB数据库时,数据库被分配到我的起始URL&#34; pages.html&#34;。然后,我导航到第2页,可以访问相同的IndexedDB。到目前为止一切都还可以。

但是,当我在第2页上点击浏览器的刷新按钮时,浏览器会加载页面&#34; pages.html#page2&#34;。现在,IndexedDB被分配到URL&#34; pages.html#page2&#34;这是另一个数据库,而不是&#34; pages.html&#34;。

即使用户刷新浏览器,我如何解决此问题并始终使用相同的数据库?

1 个答案:

答案 0 :(得分:1)

除非两个网址的来源不同,否则您不应该看到不同的数据库。 Source:

  

IndexedDB遵循同源策略。原点是正在执行脚本的文档的URL的域,应用程序层协议和端口。每个来源都有自己的相关数据库集。每个数据库都有一个名称,用于在原点内标识它。

     

对IndexedDB施加的安全边界阻止应用程序访问具有不同来源的数据。例如,虽然http://www.example.com/app/中的应用或页面可以从http://www.example.com/dir/检索数据,但由于它们具有相同的来源,因此无法从http://www.example.com:8080/dir/(不同端口)或{{3 (不同的协议),因为它们有不同的起源。

您真的在https://www.example.com/dir/http://example.com/pages.html#page1看到了不同的数据库吗?或者在第二种情况下,URL会以某种方式更改,可能是http://example.com/pages.html#page2https://example.com/pages.html#page2