我一直在四處尋找,但無法找到一組答案或解決方案這一點。 我有2個網站,www2.domain.net
和www3.domain.net
這兩個網站對他們有一個鏈接到www.domain.co.uk/iframe.html
我想要做的是檢查父URL,即一個iFrame - 在用戶訪問www2.domain.net
或www3.domain.net
這樣我就可以顯示特定信息只是訪問www3.domain.net
的人。
這可能嗎?
感謝, 安德魯
我一直在四處尋找,但無法找到一組答案或解決方案這一點。 我有2個網站,www2.domain.net
和www3.domain.net
這兩個網站對他們有一個鏈接到www.domain.co.uk/iframe.html
我想要做的是檢查父URL,即一個iFrame - 在用戶訪問www2.domain.net
或www3.domain.net
這樣我就可以顯示特定信息只是訪問www3.domain.net
的人。
這可能嗎?
感謝, 安德魯
它不是。 iframe被認爲是框架,因此跨域策略適用於它們。由於iframe域(www.domain.co.uk/iframe.html)與父域(www3.domain.net)不同,因此無法訪問父域。然而,我相信您仍然可以通過DOM或通過window.frames(包括iframe在內的所有框架的數組)訪問來自父域的iframe。
由於Same Origin Policy,在這種情況下不可能發佈(和發佈一樣)。但是,您似乎控制了所有這些域。如果是這樣,您可以使用查詢字符串在iFrame標記的src屬性中傳遞父域,然後在iFrame頁面中訪問它。請參閱@ Andy的實施答案。
這是可能的,但不是非常簡單,並且要求您可以控制涉及的所有三個頁面。
如果你做控制所有三個網站都有跨窗口消息傳遞,由window.postMessage()
提供。然而,這是(相對)新增加的DOM和不支持在舊的瀏覽器等IE 7,IE 6,Safari瀏覽器4,Firefox 2和歌劇9.
// Parent:
iframeWin.postMessage("Hello, from "+window.location.host);
// Iframe:
window.onmessage = function (evt) { alert(evt.origin); }
另一種選擇是經由URL來傳遞域
<iframe src="www.domain.co.uk/iframe.html?www2.domain.net" />
和所需的JavaScript(從頁面調用的iframe內):
alert(window.location.search);
//-> "?www2.domain.net"
如果你在同一個域中 – Mohsen
HTTP這是可能的:然後在另一端解析這個// jsfiddle.net/w Xrgx/2/ – Mohsen
@Mohsen,OP已經明確提到了所有的領域。主機頁面和iframe的域名不同,因此iframe **不能**讀取父級的位置。 –