面试题 - 两个页面间如何传递数据
针对这个问题我只能说说自己的理解了,肯定会有遗漏,毕竟我前端也不怎么会,有其他方法的朋友可以指出来,这样我也好再学习一下。
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或者通过借助中转服务器,那么两者之间的数据是无法正常交互的。
上面都是我的理解。欢迎讨论。