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

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

新規登録して質問してみよう
ただいま回答率
86.12%
Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

JavaScript

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

解決済

Java Script 親ウィンドウから子ウィンドウを別ウィンドウで開いて、値を返したい。 (Chrome)

masakifukuta
masakifukuta

総合スコア54

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

JavaScript

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

2回答

0リアクション

1クリップ

247閲覧

投稿2022/09/30 04:53

編集2022/10/03 02:21

いつもお世話になっています。表題の件、うまくいかず困っています。
ネット検索にて、たくさんのサンプルコードが有るので、いろいろコピーして試していますが、
どれも上手くいきません。
ブラウザはchromeです。adblockは動作禁止、JavaScript動作可能の設定です。

下記、コードにてparent.htmlからchild.htmlを開いた後、child.htmlのscriptで、window.openerを参照した所で
scriptの実行が停止するらしく、alert("ここまでの動作確認用_2");

alert("ここまでの動作確認用_2");

以降が実行されていません。

どなたか、原因・対処方法。参考になるサイトなどご教授願います。
よろしくお願いいたします。

parent.html

<html> <head> <meta charset="utf-8" /> <script Language="JavaScript"> var url = "http://localhost:8080//MyWebPage/window_opener/child.html"; function openWindow() { window.open(url, "_blank", "width=500,height=240"); window.open(url, "_blank", "popup=yes", "width=500,height=240"); // ↓ 以下2行、子window で 親windowを参照出来ない。 //window.open(url, '_blank', "width=500,height=240").opener = null; //window.open(url, "_blank", "noreferrer"); }; </script> </head> <body> <!-- aタグでテスト --> <a href="http://localhost:8080//MyWebPage/window_opener/child.html" target="_blank" rel="noopener noreferrer"> click </a> <br> <!-- JS でテスト --> <form name="frm1"> <input type="button" onclick="openWindow()" value="Send"> <input type="text" id="input" name="box" value="返ってくる値"> </form> </body> </html>

child.html

<html> <head> <meta charset="utf-8" /> <script Language="JavaScript"> // 親windowの記述 // <form name="frm1"> // <input type="button" onclick="openWindow()" value="parent"> // <input type="text" id="input" name="box" value="返ってくる値"> // </form> function setData() { let objRef = window.opener; if (!objRef || objRef.closed) { alert("親ウィンドウが確保出来ていない。"); // window.opener 再設定? objRef.location = "http://localhost:8080//MyWebPage/window_opener/parent.html"; // window.close(); } alert("ここまでの動作確認用_1"); // let returnRef = objRef.document.getElementById("input"); // ↓ ここで実行が停止している模様 let returnRef = objRef.document.getElementByName("box"); if (!returnRef) { alert("オブジェクトが確保できてない。"); } alert("ここまでの動作確認用_2"); // ココから以下、いろいろな構文を試したが、動作しない。 //alert(objRef.document.getElementById("input").value); //window.opener.frm1.input.value = document.getElementById("input").value; objRef.frm1.input.value = "return value"; //alert(objRef.document.getElementById("input").value); //window.opener.frm1.input.setData("test"); alert("ここまでの動作確認用_3"); window.close(); } </script> </head> <body> <input type="text" id="input" value="returnの値"> <input type="button" value="return" onclick="setData()"> </body> </html> コード
window.open(url, "_blank", "width=500,height=240"); ↓新しいタブで開く。に変更。toolbarが操作できるようにする。 window.open(url, "menubar=yes , toolbar=yes");

child.htmlが表示された時、Chromeのデベロッパーツールのコンソールに、
下記のエラーが表示されているのを、見えるようになりました。
child.html:27 Uncaught DOMException: Blocked a frame with origin "http://localhost:8080" from accessing a cross-origin frame.
at setData (http://localhost:8080//MyWebPage/window_opener/child.html:27:30)
at HTMLInputElement.onclick (http://localhost:8080//MyWebPage/window_opener/child.html:53:59)

localhost:8080のアクセスをブロックしている?んでしょうか

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

int32_t

2022/09/30 04:57 編集

子ウィンドウで開発者ツールを開いていると、ボタンを押したときにコンソールにエラーが出ていませんか?
shinoharat

2022/09/30 05:05 編集

getElementByName じゃなくて getElementsByName かと思います。
masakifukuta

2022/10/03 02:03

ご指摘ありがとうございます。 スペル修正しました。 現象は治りませんでした。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

JavaScript

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