ここには、iFrame 内から親 URL を見つけようとする記事が山ほどあります。
私はそれをしようとしているのではなく、現在のページの URL を Javascript で知りたいだけです。
どういうわけかこれは難しいように思えますが、理由がわかりません!
ということで、徹底解説。
私の親ページのHTMLは次のようになります
<html>
<body>
<iframe id="mainWindow" name="mainWindow" src="myMainPage.aspx" style="border: 0; position:fixed; top:0; left:0; right:0; bottom:0; width:100%; height:100%"></iframe>
<iframe src="myOtherPage.aspx"></iframe>
</body>
</html>
ノート; トップフレームのstyle
は、画面全体に表示されます。私が iFrame を使用している唯一の理由は、サーバー制御のバックグラウンド タスク (長い話) を使用できないため、Javascript タイマーを介して 2 番目のフレームを使用していくつかの疑似バックグラウンド タスクを実行できるようにするためです。
したがって、ここにはフレームがありますが、実際にはフレームを使用してフレーム付きレイアウトを作成しているのではなく、ユーザーがアプリケーションを使用している間、プライマリ ページが静的なままであるようにするためです (これはバックエンド CMS システムであり、ライブ システムではありません)。顧客向けウェブサイト)
したがって、基本的に、バックグラウンド サービス機能を除くすべてがメインの iFrame 自体から実行され、親ページが実際にリロードされることはなく、非表示のフレームは必要に応じて処理を行いますが、ページのアンロードによって中断されることはありません。
ときどき、メイン ウィンドウに表示されているページの URL を知りたいことがあります。
理由がよくわかりません
window.location.pathname
動作しませんが、親ウィンドウの URL が表示されます。(www.mysite.com/myParent.aspx)
document.URL
親 URL も返す
document.getElementById("mainWindow").contentWindow.location.href
要素が親のように iFrame 内に存在しないため、機能しません。
必要なのは、iFrame 自体から iFrame に読み込まれるページの現在の URL です。つまり、非常に簡単に
What is the URL of the page on which this javascript is loaded
これは、さまざまなページでわずかに異なることを行うスクリプトを MasterPage にロードしているためです。