我正在使用混合原生/ Cordova iOS应用程序。该应用程序具有下载的本机核心 来自服务器的HTML5内容项目,并将它们显示在Cordova Web视图中。
不幸的是,我遇到了本地存储的问题 - 来自所有单独存储的键值对 内容项目一起存储,因为所有本地存储的HTML文件的域都是相同的。 这意味着如果一个内容项使用相同的密钥,则可能会覆盖另一个内容项。
我不会写这些内容,并且不希望对本地存储的使用施加任意限制 对开发人员而言。
我已经尝试检查window.location
对象的内容。当我记录hostname
时,window.location.hostname
属性会正确返回域名,但设置它显然不是一个选项,因为这会重新加载页面。
我还尝试使用Safari Web控制台查看getItem
和setItem
方法的标准实现,但输出表明这些方法是本机实现的。
理想情况下,我想在JS中设置域名。但我怀疑这是不可能的,因为它也会成功 攻击页面很容易获得不属于它的本地存储密钥对。然而,明确地知道这是否可能是有用的。
答案 0 :(得分:1)
我不认为这是你在JavaScript方面可以做的事情。你可能应该在原生方面这样做。
我想知道您是否使用本机代码从不同的域中获取内容,然后将它们作为本地内容显示在Cordova中。如果这是不同域的不同内容搞乱的原因,只需停止获取本地显示的远程内容。远程内容应保留为远程内容。您可以使用普通的Web视图加载远程域,或将它们嵌入到Cordova内的iframe中。不要拉远程内容并在本地环境中运行它们。
答案 1 :(得分:0)
据我所知,没有办法让javascript做这样的事情,我相信也许使用ajax可能会允许,但不知道如何/如果Cordova将根据需要进行交互。我已经开发了几个使用apache服务器和php的应用程序和IOS的本地代码,它肯定有很多存储问题。但我不是Cordova的私人粉丝,并使用Xcode中的单一视图/或其他设置(但这是个人喜好)