2

最初に、私は JavaScript をプログラミングして約 3 か月になりますが、標準やベスト プラクティスに従ってこの問題を解決することにはあまり関心がありません。私の主な関心事は、DOM の使い方を学ぶことです。私はそれに慣れていないので、jQuery を使用したくありません。

JavaScript と DOM を使用して、自分のページにプロフェッショナルではない「ログイン」機能を作成しようとしています。そもそも、最初は「非表示」に表示され、使用時に「ブロック」表示される「ログイン」画面を使用していました。「ログイン画面」の下にあるページの主要部分に不透明度を下げて (0.1 不透明度)、「ログイン」画面の背後に暗い画面を追加すると、これはうまく機能し、非常によく見えました。

「ログイン」画面を閉じると、これ(不透明度)が正常に戻ります。したがって、同じDOMを使用して同じページ内ですべてのことが起こっていることがわかります。OK、これが私が望んでいた方法です。ユーザー名を作成してから、パスワードを作成します。ブン、完成!

しかし、ここに問題があります。ユーザー名とパスワードを作成した後、最初にログイン リンクがあった場所に「こんにちは (ここにユーザー名)」と表示させたいのです。DOM を使用してユーザー名を HTML ページに挿入することもできますが、ログイン機能であるフォームを送信すると、ページがリロードされ、DOM への変更が消去されます。

これで、私が考えた解決策についてお話しできます: フォーム (ログインページ) を新しいウィンドウにすることで、フォームが送信される (および DOM が操作される) と、新しいウィンドウがリロードされ、その後閉じて、メインページのDOMへの変更はそのままです。唯一の問題は、これを行う方法がわからないことです。おそらくそれは大きな問題だと言えるでしょう。

では、新しいウィンドウから親ウィンドウ (呼び出しウィンドウ) の DOM を操作できますか?

4

2 に答える 2

2

あなたの答えに応じて:window.opener.document新しいウィンドウから使用して、呼び出し元ウィンドウの DOM を変更できます。

window.opener呼び出し元ウィンドウへの参照 (存在する場合、そうでない場合null) ですが、両方のウィンドウが同じドメインにある場合のみ)。

注:小さな Web ページですか、それとも Web サイト/アプリケーションで JavaScript を介して多数の DOM 操作を行う予定ですか? 後者の場合は、汚い仕事をより簡単に行うために、javascript ライブラリ/フレームワーク (jQuery をお勧めします) を使用する必要があります。

于 2012-12-08T23:37:06.093 に答える
0

openerポップアップ ウィンドウは、変数を使用してそれを開いたウィンドウを見つけることができます。

ポップアップ ウィンドウと元のウィンドウの両方が同じドメインに由来する場合、ポップアップ ウィンドウは実際に元のウィンドウの HTML を変更できます。

ポップアップ ウィンドウと元のウィンドウに異なるドメインのコンテンツが含まれている場合、ブラウザーが配置するクロスオリジン保護により、互いの HTML を表示できません。

于 2012-12-08T23:37:53.443 に答える