仅使用客户端在两个 HTML 页面之间传递大量数据
Posted
技术标签:
【中文标题】仅使用客户端在两个 HTML 页面之间传递大量数据【英文标题】:Passing huge data between two HTML pages using only the client side 【发布时间】:2013-09-14 12:27:33 【问题描述】:假设我们有两个页面:A.html
和 B.html
。它们没有相同的来源(相同的域、端口或其他东西),但我可以编辑它们。
我想使用iframe
将B.html
嵌入A.html
。 B.html
中的元素使用传递到页面的数据进行更改(使用 jQuery)。
我想从 A 向 B 发送一个很长的字符串。我的第一次尝试是使用 url 搜索参数:
<iframe src=".../B.html?param=a_very_very_long_encoded_string#some-hash"></iframe>
该应用程序仅在本地计算机上运行良好,但在网络上我收到414 Request-URI Too Large
错误。
我不知道如何仅使用客户端来完成。
是否有任何替代方案或者我必须使用服务器端的 POST 方法?
【问题讨论】:
看看使用 localStorage - 只要两个页面都在同一个域中,这将满足您的需求。 @Archer 这就是问题所在!这两个页面不在同一个域中... @Archer 我看不出本地存储有什么帮助。如果您可以编辑 B 的 php 标头以允许跨域请求,那么我建议使用 ajax @koala_dev 他没有说明是否跨域,这就是为什么我说“只要两个页面在同一个域上”。他将这些信息添加到问题中因为我问了。 以@koala_dev 为基础——您可以创建一个加载函数来接收更新页面所需的信息。在加载回调中,应用数据。 【参考方案1】:这看起来是 postmessages 的一个很好的用例。 Postmessages 允许父页面和它的 iframe 或打开的窗口(两种方式)之间的跨域通信。至于正在发送的消息大小的限制,我认为它们足够大,可以处理您希望从一个窗口到另一个窗口跨域发送的大多数事情。 MDN 中没有提到限制。
就浏览器支持而言。所有现代浏览器都支持它,但是 IE8 只支持 iFrames,而 IE7 根本不支持它。 IE10 支持但有限制,在 MDN 中提到。
【讨论】:
IE真的是浏览器吗?谢谢!似乎是正确的答案。 :-) 很遗憾我还是要为 IE7 提供功能支持,但确实没那么糟糕。 不,我是 Linux 用户,不需要 IE 支持。 :-) Here 是一个不错的教程。谢谢!它按预期工作。 对于那些坚持传统支持的人,window.name
hack 可能是一个可以求助的地方,这里是 another question 关于它的优缺点以上是关于仅使用客户端在两个 HTML 页面之间传递大量数据的主要内容,如果未能解决你的问题,请参考以下文章