iframe 的 src 連去的這個 document 它的 domain, protocol 會影響, 例如
abc.iwakela.com
如果A 這個document的domain 跟外面不同, 意思就是說沒有設定的話, 外面的domain 是abc.iwakela.com, 而iframe的是 www.iwakela.com
要在A裡面去用像 parent.frames["B"] 來取B, 只也能是拿到B iframe, 可是取用其函式或屬性就就是必須domain等相同, 所以也是等於啥都拿不到, 在domain或port 都不同的情況下, 唯一能用的就是像 A.location.href 這樣的 redirect function
所以最好是手動去將雙方設成iwakela.com 這樣的domain (document.domain = "iwakela.com")
當然如果有用到https,雖然 document.domain 都是 iwakela.com,結果也會無法互相叫用了, 因為port 不同阿 XD
parent.frames['A'] 跟 parent.frames['B'] 的 domain 和 port 都一樣的話,所以可以通這兩個就可以互通(就算跟外面, 也就是parent 不同也沒差), 從 B 拿 parent 的所有東西都拿不到,但是 frames 可以拿得到,這是瀏覽器刻意支援,目的應該就是要滿足類似我們這種需求
結論
同 document.domain 且 同 port 時
, 你可以存取所有跟你相同 document.domain 的屬性和函式
不同 document.domain 或不同 port 時, 你只能呼叫它 redirect,其他幾乎什麼都不行
沒有留言:
張貼留言