浏览器的两个页面之间通信的问题

问题:如何实现浏览器页面A中传递一个数据到页面B,然后页面B处理此数据之后再次返回页面A?
要求:求各位大佬详细的解答一下,或者推荐几篇不错的文章。
开始的时候以为这个问题属于跨域问题,因为自学入门的时间比较短,所以也不是很了解,可是查了一下跨域到底是什么之后发现好像不是跨域问题,所以求大佬解答一下。

阅读 7.8k
4 个回答

postMessage API
支持两个页面跨域;只能传递字符串数据;参考 window.open;

直接引用
适用于两个页面在同一域;可以传递对象数据(对象数据使用 instanceof 做类型判断时有坑);参考 window.open;

WebSocket 服务器中转
需要页面都与服务器建立 WebSockets 连接;支持跨域;参考 WebSocket

localStorage 事件
要求两页面在同一域;数据可以通过 localStorage 传递;参考 localStorage 的 'storage' 事件;

...

其实方案不少,关键看需求。

单独在两个浏览器页面通信?一般来说会有个后台处理的过程吧,比如说表单提交:先在A页面填写数据,然后发送到后台处理,处理完毕后后台可以指定一个参数告诉前端要做什么,(比如去转到哪个页面)

如果你就是想在页面中传递数据,可以用js 的window.location.href='目标url?key=value&&key=value'这种形式传递,然后在B页面获取浏览器的loaction对象,解析出参数,根据自己的需要处理完毕再用window.location.href跳回去原来的页面。只是这种做法是很少见的,因为实际意义不大。

纯粹使用前端技术是做不到的,现代浏览器安全方面考量很多,页面之间都是隔离的,还是要靠后端实现:举一个比较蠢的例子:
浏览器A页面登录163邮箱发一封邮件,B页面登录QQ邮箱收到这份邮件。

如果AB有嵌套关系,可以用window.postMessage

对任意页面好像没有不需中转的方法

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏