在 IE 10+ 上,在 iFrame 中读取时 document.referrer 是不是为空白?
Posted
技术标签:
【中文标题】在 IE 10+ 上,在 iFrame 中读取时 document.referrer 是不是为空白?【英文标题】:On IE 10+, will document.referrer be blank when read inside an iFrame?在 IE 10+ 上,在 iFrame 中读取时 document.referrer 是否为空白? 【发布时间】:2014-08-01 21:10:25 【问题描述】:在所有其他最近的浏览器上,从 iframe 内运行的应用读取 document.referrer
将返回父站点的 URL。然而,在 IE 11 上,它似乎返回了一个空字符串。我想确认这是否是 IE 10+ 上的预期行为,但谷歌搜索并没有太多关于这个特定场景的信息。
MS的documentation有点含糊:
仅当用户通过上一个文档的链接到达当前文档时,此属性才会返回一个值。否则,document.referrer 返回一个空字符串;
不知道上面有没有涵盖iFrame,然后有这个位:
当链接来自安全站点时,它也会返回一个空字符串。
父应用确实是一个安全的 https 站点,但我们的 iframe 应用也是如此。这是否意味着我们将无法在 IE 10+ 上的 iframe 中读取此属性?谢谢
【问题讨论】:
我认为只要链接来自安全站点,无论当前页面是否安全,它都会返回一个空字符串,因为文档从未提及它 阅读 MS 的文档给人的印象是它的预期行为。您不会通过上一个文档中的链接加载 iframe。 【参考方案1】:我发现,当 iframe 没有 src
或者其 src
具有 javascript:
协议时,document.referrer
属性也是一个空字符串。
您可以在开发者工具中轻松验证这一点:
var ifr = document.createElement('iframe');
document.body.appendChild(ifr);
ifr.contentDocument.referrer;
//-> '' in IE, '<parent location>' in Chrome
【讨论】:
以上是关于在 IE 10+ 上,在 iFrame 中读取时 document.referrer 是不是为空白?的主要内容,如果未能解决你的问题,请参考以下文章