1 回答
TA贡献1865条经验 获得超7个赞
let url = (window.location !== window.parent.location) ? document.referrer : document.location.href;
代码中的这一行使得当您在 iframe 中时,document.referrer用作确定语言的 URL。
根据Document.referrer 上的MDN 页面:
该Document.referrer属性返回链接到此页面的页面的 URI。
在 内<iframe>,Document.referrer最初将设置为与href父窗口的相同的值Window.location。
这意味着它可以在初始加载时正常工作,正如您所经历的那样。据我所知,规范并没有明确说明如何处理重新加载。这可能是浏览器行为差异的原因。认为重新加载后它应该是空的并不是太疯狂,因为当时它不是从父页面加载的。
另一种解决方案是使用window.parent.location.href,它始终引用iframe父窗口的 URL (在 document.referrer 和 window.parent.location.href 之间的区别中阅读更多内容)。
您的代码行可能如下所示:
// if parent and child href are equal, using either yields the same result
// if there is no parent, window.parent will be equal to window
// therefore, the conditional statement isn't necessary
let url = window.parent.location.href;
添加回答
举报