面試題 - 兩個頁面間如何傳遞數據

針對這個問題我只能說說本身的理解了,確定會有遺漏,畢竟我前端也不怎麼會,有其餘方法的朋友能夠指出來,這樣我也好再學習一下。前端

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或者經過藉助中轉服務器,那麼二者之間的數據是沒法正常交互的。插件

上面都是個人理解。歡迎討論。對象

相關文章
相關標籤/搜索