2014-05-20 67 views
6

我們將我們的iframe條目表單代碼放在網頁上。我們希望能夠看到某人來自哪裏,如果他們登陸頁面並將他們的信息輸入到表單中。如何獲取iframe父頁的引用來源?

例如:我們的iframe嵌入在頁面上。該頁面的URL會發布到Facebook。有人點擊鏈接,登錄頁面,並將他們的信息輸入到我們的iframe輸入表單中。然後我們希望能夠說,1個推薦來自Facebook。

我們嘗試使用$ _SERVER ['HTTP_REFERER'],但這只是返回嵌入iframe的父頁面URL,這是我們不想要的。我們希望推薦的實際URL到父頁面(在上面的例子中,它將是Facebook)。有沒有辦法獲取這些信息?

+0

是在iframe和在同一個域父頁面? – earl3s

+0

否。iframe託管在單獨的域上,父頁面是獨立的域。 –

+0

我添加了我能想到的唯一一件事來作爲答案。跨域安全性不允許您通過另一個域上的iframe獲取引薦來源。 – earl3s

回答

9

不幸的是,跨域安全性會阻止您的這些信息,因爲您的iframe與嵌入它的父頁面不在同一個域中。您可以在iframe中檢查引用鏈接,但它只會爲您提供嵌入網頁的名稱。

如果您位於同一個域中,您將有權訪問JavaScript中的document.referrer,並且可以通過iframe檢索。

雖然我確實有解決方案的想法。

如果您使用腳本將iframe嵌入到父頁面中,則可以這樣做。

function createIFrame() { 
    var ref = document.referrer; 
    ifrm = document.createElement("iframe"); 
    ifrm.setAttribute("src", "http://www.nba.com/?referrer="+ref); 
    ifrm.style.width = 640+"px"; 
    ifrm.style.height = 480+"px"; 
    document.body.appendChild(ifrm); 
} 

createIFrame(); 

這將允許你然後在iframe中讀取您的網址查詢字符串referrer並將該信息發送到您的服務器。它需要你用你的小部件打包一些javascript,但它可能是唯一的解決方案。

的jsfiddle - http://jsfiddle.net/7QbPN/

相關問題