从 IFRAME 获取当前 URL

IT技术 javascript url iframe
2021-01-13 03:38:50

有没有一种简单的方法可以从 iframe 中获取当前 URL?

观众将浏览多个网站。我猜我会在 javascript 中使用一些东西。

6个回答

出于安全原因,只要 iframe 的内容和引用的 javascript 来自同一域,您就只能获取 url。只要这是真的,这样的事情就会起作用:

document.getElementById("iframe_id").contentWindow.location.href

如果这两个域不匹配,您将遇到跨站点引用脚本安全限制。

另请参阅对类似问题的回答

在我链接的问题中没有获胜的答案......如果你的意思是最重要的答案,它并不是一个真正有效的解决方案。使用 IE,您可以尝试上述问题的答案中也提供的 HTA 方法。
2021-03-14 03:38:50
其他方式: window.frames[0].location.href
2021-03-16 03:38:50
如果我们将属性添加sandbox="allow-same-origin"到 iFrame 会怎样?
2021-03-17 03:38:50
如果我们允许 Iframe 的目标服务器上的新源,我们会遇到问题吗?
2021-03-17 03:38:50

如果您的 iframe 来自另一个域(跨域),则其他答案对您没有帮助……您只需要使用它:

var currentUrl = document.referrer;

和 - 在这里你有主网址!

阿斯洛:document.getElementById("iframe").contentDocument.referrer
2021-03-12 03:38:50
这不会给你最多的(尝试使用 2 个嵌套的 iframe),但即使只考虑一个级别,也很容易伪造它,因此你不能绝对依赖它!
2021-03-17 03:38:50
-1 OP 正在寻找 iframe 的当前 url,而不是父页面的引用。
2021-03-20 03:38:50
你救了我的命,这正是我需要的
2021-03-31 03:38:50
@Christophe - 我知道,但它可以帮助人们寻找获取主网址并提出这个问题!
2021-04-06 03:38:50

如果您在 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');

为我节省了很多时间。据我所知,唯一的条件是访问父页面代码。希望这会帮助某人。

本地存储只能在同一个域上工作……那么为什么要遇到所有这些麻烦呢?只需查询 location.href
2021-03-31 03:38:50

我遇到了 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");
    }