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

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

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来跨域发送数据。服务器

参考连接:dom

http://davidwalsh.name/window-postmessagepost

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

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

上面都是个人理解。欢迎讨论。对象

相关文章
相关标签/搜索