web-dev-qa-db-ja.com

IFRAMEから現在のURLを取得する

Iframeから現在のURLを取得する簡単な方法はありますか?

視聴者は複数のサイトを通過します。私はJavaScriptで何かを使用していると推測しています。

82
chris

セキュリティ上の理由から、iframeのコンテンツと参照JavaScriptが同じドメインから提供されている限り、URLを取得できます。それが真実である限り、このようなものは機能します:

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

2つのドメインが一致しない場合、クロスサイトリファレンススクリプトのセキュリティ制限が発生します。

同様の質問への回答 も参照してください。

142
kkyy

Iframeが別のドメイン(クロスドメイン)からのものである場合、他の答えは役に立ちません...これを使用するだけです:

var currentUrl = document.referrer;

そして-ここにメインのURLがあります!

24
ParPar

これがあなたのケースで何らかの助けになることを願っています、私はまったく同じ問題に苦しみ、親ウィンドウとiframeの間でデータを共有するためにlocalstorageを使用しました。そのため、親ウィンドウでは次のことができます。

localStorage.setItem("url", myUrl);

そして、iframeソースがlocalstorageからこのデータを取得するコードでは:

localStorage.getItem('url');

時間を大幅に節約してくれました。私が見る限り、唯一の条件は親ページコードへのアクセスです。これが誰かを助けることを願っています。

2
Beny

Iframeコンテキストを使用している場合、

できます

const currentIframeHref = new URL(document.location.href);
const urlOrigin = currentIframeHref.Origin;
const urlFilePath = decodeURIComponent(currentIframeHref.pathname);

親ウィンドウ/フレームにいる場合は、 https://stackoverflow.com/a/938195/230524 の答えを使用できます。

document.getElementById("iframe_id").contentWindow.location.href
0
Alan Dong