有没有一种简单的方法可以从 iframe 中获取当前 URL?
观众将浏览多个网站。我猜我会在 javascript 中使用一些东西。
有没有一种简单的方法可以从 iframe 中获取当前 URL?
观众将浏览多个网站。我猜我会在 javascript 中使用一些东西。
出于安全原因,只要 iframe 的内容和引用的 javascript 来自同一域,您就只能获取 url。只要这是真的,这样的事情就会起作用:
document.getElementById("iframe_id").contentWindow.location.href
如果这两个域不匹配,您将遇到跨站点引用脚本安全限制。
另请参阅对类似问题的回答。
如果您的 iframe 来自另一个域(跨域),则其他答案对您没有帮助……您只需要使用它:
var currentUrl = document.referrer;
和 - 在这里你有主网址!
如果您在 iframe 上下文中,
你可以
const currentIframeHref = new URL(document.location.href);
const urlOrigin = currentIframeHref.origin;
const urlFilePath = decodeURIComponent(currentIframeHref.pathname);
如果您在父窗口/框架中,则可以使用https://stackoverflow.com/a/938195/2305243的答案,即
document.getElementById("iframe_id").contentWindow.location.href
希望这对您的情况有所帮助,我遇到了完全相同的问题,只是使用 localstorage 在父窗口和 iframe 之间共享数据。所以在父窗口中,您可以:
localStorage.setItem("url", myUrl);
在 iframe 源只是从 localstorage 获取这些数据的代码中:
localStorage.getItem('url');
为我节省了很多时间。据我所知,唯一的条件是访问父页面代码。希望这会帮助某人。
我遇到了 blob url hrefs 的问题。因此,通过对 iframe 的引用,我刚刚从 iframe 的 src 属性生成了一个 url:
const iframeReference = document.getElementById("iframe_id");
const iframeUrl = iframeReference ? new URL(iframeReference.src) : undefined;
if (iframeUrl) {
console.log("Voila: " + iframeUrl);
} else {
console.warn("iframe with id iframe_id not found");
}