質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

573閲覧

子ウィンドウのページが全て表示されたのを確認できたら親ウィンドウ内にあるチェックボックスを有効にする方法

kobajun

総合スコア9

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2020/10/07 09:18

前提・実現したいこと

ブラウザで子ウィンドウのページが全て表示されたのを確認できたら
親ウィンドウ内にあるチェックボックスを有効にする方法について調査しております。

親ウィンドウに表示されたページ(以下、親ページと表記します)にあるリンクを押下すると
ウィンドウ(タブ)が起動し、別のページ(以下、子ページと表記します)が表示されます。

スクロールバーなどを操作して子ページを最後まで表示したら
親ページに設置しているチェックボックスを入力可能(disable→enable)にしたいです。

しかし、親ページ側で子ページのイベントを上手く拾うことができませんでした。
(下記に記載するようなコードでイベントを拾えるかコンソールログを出力するよう試してみたのですが動作しませんでした。)

前提条件として子ページには一切手を加えられない(子ページから親ページにメッセージを送信するなどの処理を入れる)のですが
何か良い方法をご存知でしたら何卒、ご教示頂けますよう宜しくお願いたします。

該当のソースコード

HTML/JavaScript

<html> <head> <title>test</title> <script type="text/javascript"> function nextPage() { var nextWindow = window.open('http://www.hogehoge.jp/test3/next.html'); // ↓これは動作しない nextWindow.addEventListener('scroll', function(e) { window.console.log('bbb'); }); return; } // ↓これは動作する window.addEventListener('scroll', function(e) { window.console.log('aaa'); }); </script> </head> <body> <a href="javascript:nextPage();">next</a><br /> <br /> <input type="checkbox" name="check" value="1" disabled="disabled">チェック<br /> </body> </html>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kuma_kuma_

2020/10/07 10:32

一応確認します。ブラウザから子画面の表示はできますが、ブラウザの「ポップアップ防止」機能がはたらいて正常に表示できない場合があります。 最近ではモーダル画面という親画面の上に子画面をかぶせて表示する方法が良くとられます。 今回それでも子画面で処理したいという事でよろしいのでしょうか?
kobajun

2020/10/07 12:25

お忙しいところご意見を頂きありがとうございます。 モーダル表示上に子画面を表示する手法は考えていませんでした。 こちらについても考えてみたいと思います。 しかし、今のところは子画面で処理したいと考えています。 どうぞ宜しくお願いたします。
guest

回答1

0

ベストアンサー

この場合、質問者様のコードでは動きません

逆転の発想が必要です
Javascriptで開いた子画面から親画面の関数を呼び出す

親が子が完全に開いたか確認するのではなく
子が開いたら親に通知するのです。
今回はスクロールイベントなのでなぜそのような処理を子に持たせておかないのかは不明ですが、
親で指定したfunctionを子で使う事は可能です。

投稿2020/10/07 12:35

kuma_kuma_

総合スコア2506

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kobajun

2020/10/09 08:47

ご教示いただきありがとうございます。 やはり子の方で処理させる必要があるのですね。 どうもありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問