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

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

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

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

23965閲覧

window.openで開いたタブ(ウィンドウ)から親に値を渡したい

lupus_dingo

総合スコア257

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2015/03/30 14:41

編集2015/03/30 15:01

以下のように実装してみましたが、うまくいきません。
F12ツールでデバッグしてみると、

window.opener.documentで親の要素に値を設定するときにエラーになっているようですが解決できないので教えてください。

エラー
IE11の場合:未定義または NULL 参照のプロパティ 'value' は取得できません
Chromeの場合:Blocked a frame with origin "null" from accessing a cross origin frame

<親ウィンドウ>

<script type="text/javascript"> function pop() { window.open("pop.htm"); } </script> <input type="text" name="name" size="40" maxlength="600" value="山田太郎" id="name"/> <input type="button" onClick="return pop();" value="選択">

***************************

<子ウィンドウ>

<script type="text/javascript"> function set() { window.opener.document.getElementById("name").value = document.getElementById("name").value; quitBox('quit'); } function quitBox(cmd) { if (cmd=='quit'){ //open(location, '_self').close(); this.close(); } return false; } </script>

<button onclick="return set();">セット</button>

以下を参考にしています。
http://browserstrangeness.bitbucket.org/window_close_tester.htm

************追記***************
もしかしたら解決したかもしれません。。。
上記はローカルのHTMLをブラウザで表示して確認していたのですが
Webサーバにアップロードして確認したところ、親ウィンドウに値が書き込まれ
子ウィンドウが閉じられました。
でもなぜローカルではうまくいかないのでしょうか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

恐らくローカルにサーバーを立ててテストすれば動作するでしょうね。
重要! まずは「オリジン」を理解しよう
ローカルファイルで確認した時には「オリジンがないぞ」ってエラーが出るのは不思議ではありません。
(ローカルファイル環境ではlocalStorageが使用できないように)
それがサーバーにアップされたことにより解消されたというわけですね。

ローカルにサーバーを立てて動作確認するように言われるのはこのようにローカルファイルでは動作しない機能などがあり完全なテストができないから(本番に近い環境でテストできないから)という理由もあります。

投稿2015/03/30 17:18

Cf_cwd

総合スコア730

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

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

lupus_dingo

2015/04/01 09:03

回答ありがとうございます。 >ローカルにサーバーを立てて動作確認するように言われるのはこのようにローカルファイルでは動作しない機能などがあり完全なテストができないから(本番に近い環境でテストできないから)という理由もあります。 なるほど。勉強になりました。 ちなみにlocalStorageってなんでしょうか?
Cf_cwd

2015/04/01 11:52

JavaScriptで使用できる(KVS形式での)データ保存仕様だと考えていただければ。 これまでcookieを使用していたものはこれからはsessionStorageなどを用いて作られていくようになるんじゃないですかね 参考URL: http://www.htmq.com/webstorage/
lupus_dingo

2015/04/04 04:20

こんな仕組みがあったんですね。初めて知りました。 ブラウザにデータを保持する仕組みはクッキーしかないと思っていました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問