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

3
假设我们有两个页面:A.htmlB.html。它们的来源不同(域名、端口等),但我可以编辑它们。
我想使用iframeB.html嵌入到A.html中。使用传递给页面的数据(使用jQuery)更改来自B.html的元素。
我想从A向B发送一个非常长的字符串。我的第一次尝试是使用URL搜索参数:
<iframe src=".../B.html?param=a_very_very_long_encoded_string#some-hash"></iframe>

该应用程序只能在本地机器上正常工作,但在 Web 上出现 414 Request-URI Too Large 错误。

我不知道如何仅使用客户端解决这个问题。

是否有任何替代方案?或者我必须使用 POST 方法的服务器端来解决?


看看使用localStorage - 只要两个页面在同一个域上,它就能满足你的需求。 - Reinstate Monica Cellio
@Archer 这就是问题所在!这两个页面不在同一个域中... - Ionică Bizău
@Archer 我不认为本地存储可以帮助解决问题。如果您可以编辑B的php头文件以允许跨域请求,那么我建议使用ajax。 - omma2289
@koala_dev 他之前没有说明是否跨域,所以我说“只要两个页面在同一个域名下”。他之后添加了这个信息到问题中,因为我提出了这个问题。 - Reinstate Monica Cellio
@KevinB 哈哈哈,“IE:不支持”,但我不在乎。 :-) 请发布一个答案。这是你的主意。 - Ionică Bizău
显示剩余7条评论
1个回答

2
这似乎是使用postmessages的好用例。Postmessages允许父页面与其iframe或打开的窗口(双向)之间进行跨域通信。至于发送消息的大小限制,我认为它们足够大,可以处理您想要从窗口到窗口跨域发送的大多数内容。MDN中没有提到任何限制。
就浏览器支持而言,所有现代浏览器都支持它,但是IE8仅支持iFrames,而IE7根本不支持。IE10支持它,但在MDN中有限制。

IE真的算是一个浏览器吗?谢谢!看起来这是正确的答案。 :-) - Ionică Bizău
遗憾的是,我仍然需要为IE7提供功能支持,但实际上并不那么糟糕。 - Kevin B
不,我是Linux用户,不需要IE支持。 :-) 这里有一个很好的教程。谢谢!它按预期工作。 - Ionică Bizău
1
对于那些被困在遗留支持中的人来说,“window.name”黑客技巧可能是一个可以求助的地方,这里有另一个关于它的利弊的问题。链接 - Robert Byrne

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接