通常情況下,我們獲取iframe父頁面的url很簡單:parent.location或top.location即可,但前提是它們遵循同源策略。
當iframe與父頁面不屬於同一個域名時,像上面的獲取會因為安全策略原因而失敗。在nczonline的一篇文章上看到一種方法,使用document.referrer。
方法很簡單,通過parent !=window檢測iframe與父頁面是否同源,當不同源時,使用document.referrer,否則使用parent.location.href或者top.location.href;
function getParentUrl() { var url = null; if (parent !== window) { try { url = parent.location.href; }catch (e) { url = document.referrer; } } return url; }
當iframe是被動態創建的時候,以上方式依然有效。當然,你也可以使用window.name的方式去做處理。