2009年2月3日 星期二

iframe,src,domain

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,其他幾乎什麼都不行

沒有留言: