面试题 - 两个页面间如何传递数据

针对这个问题我只能说说自己的理解了,肯定会有遗漏,毕竟我前端也不怎么会,有其他方法的朋友可以指出来,这样我也好再学习一下。

1 如果页面A和页面B是同域的情况

如果是同域那么两者之间可以直接通过客户端存储来交换数据的,客户端存储的方式可以看我前面一篇文章。在同域的假设条件下,如果页面A和B还是嵌套关系的话,那么可以直接使用脚本读取对方的数据,更快捷了。

2 如果页面A和页面B不同域的情况

页面A通过点击链接跳转到页面B的话,那么数据可以通过search和hash附加在B页面的URL上,传递给页面B。再如果页面A跳转到页面B的时候target=_self,也就是说它们在同一个浏览器窗口先后运行的,那么window对象它们是共享的,因此我们可以通过window.xx来传递数据,比如window.name=123;

3 如果页面A和B,不同域,也没有跳转关系

如果浏览器支持HTML5的话,我们可以使用window.postMessage来跨域发送数据。

参考链接:

http://davidwalsh.name/window-postmessage

http://blog.teamtreehouse.com/cross-domain-messaging-with-postmessage

剩下的,除非使用第三方的插件,比如flash,activex或者通过借助中转服务器,那么两者之间的数据是无法正常交互的。

上面都是我的理解。欢迎讨论。

posted @ 2014-10-12 23:01  HuangJacky  阅读(4133)  评论(0编辑  收藏  举报
AdminLogin