仅使用客户端在两个 HTML 页面之间传递大量数据

Posted

技术标签:

【中文标题】仅使用客户端在两个 HTML 页面之间传递大量数据【英文标题】:Passing huge data between two HTML pages using only the client side 【发布时间】:2013-09-14 12:27:33 【问题描述】:

假设我们有两个页面:A.htmlB.html。它们没有相同的来源(相同的域、端口或其他东西),但我可以编辑它们。

我想使用iframeB.html 嵌入A.htmlB.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 页面之间传递大量数据的主要内容,如果未能解决你的问题,请参考以下文章

在网页之间传递大量数据

在mui中怎样实现两个页面之间传递数据

如何在两页面之间传递JSON数据

HTML5中window.postMessage,在两个页面之间的数据传递

两个html的页面之间怎么传递参数啊

如何在javascript中的不同html页面之间传递变量值