- 締切済み
タブブラウザで focus() を実現する方法を教えてください。
WEBページを作成しています。 javascriptで親子ウィンドウ(親子タブ)のフォーカスをコントロールしようとしています。 IEなどデフォルトが「ウィンドウを開く」設定のブラウザでは問題ないのですが、Firefox、Google Chrome、Mac Safariなどのタブブラウザ(「新しいウィンドウでなく新しいタブでひらく」がデフォルト設定のブラウザ)ではうまくフォーカスしません。 以下に現在のソースを記載させていただきました。 実現のためのアドバイスをお願いします。 以下が現在のソースです。 =================================================== function GoTo_Home() { if(!opener) { // openerが存在しない Open_Home(); } else if(opener.closed == true) { // openerが閉じている Open_Home(); } else { // openerを前に出す opener.focus(); } } // 「parentsite」を開き、openerにする function Open_Home(parentsite) { var parentsite = window.open("http://www.hoge.com/"); opener = parentsite; parentsite.focus(); } =================================================== よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- yyr446
- ベストアンサー率65% (870/1330)
一般的な用語と、windowオブジェクトのプロパティ名や、メソッド名 とその使い方についてかなり混乱されていると思われます。 実際ややこしいし、様々な書き方や省略があるので、わかりにくいかも しれませんが、一度整理してみましょう。 .focus() windowオブジェクトをフォーカスします。(メソッド) .name windowオブジェクトの名前(プロパティ)参照/変更可能 .opner 自分自身を開いた親ウィンドウを示す(プロパティ)参照/変更はブラウザー依存 .open(url,name,option) nameの名前を持った新しいwindowオブジェクト を開くメソッド .parent 親オブジェクト(windowオブジェクトとは直接は関係しない) .location windowオブジェクトのロケーションオブジェクト さらにlocation.hrefとかlocation.replace()とか...
- yambejp
- ベストアンサー率51% (3827/7415)
いまいちフローとして何がやりたいのかわからないですが、 openerを代入するのはブラウザ依存では?
補足
さっそくのご回答まことにありがとうございます。 説明不足で申し訳ありません。 フローは以下です。 (1)母体のサイトからリンククリックで、関連ページを別ウィンドウで表示 (2)別ウィンドウで表示された子ウィンドウから、リンククリックで母体のサイトに戻させたい →これを実現させたいのですが、新規ページがタブで増えていくブラウザの場合、親ウィンドウが「消されず存在」していたとき、タブのフォーカスが移らないという問題があります。 つまり子ウィンドウ(子タブ)で母体へのリンクをクリックしてもタブは移らず、子ウィンドウ(子タブ)のままというのが芳しくないのです。 IEのようなデフォルトで新規オープンページがウィンドウとして重なって現れるブラウザでは、親ウィンドウ(母体)が存在している場合、ウィンドウを手前にだす→「フォーカスの動作」が実行されてまったく問題ありません。 >openerを代入するのはブラウザ依存では? こちらはどういった意味でしょうか?知識が乏しくご迷惑をおかけします。 それはopenerは利用しない方法を探したほうがよろしいということでしょうか。
お礼
質問もままならないところに、ご丁寧なアドバイスをいただき、大変感謝しております。 オブジェクトの階層構造とオブジェクトごとのプロパティ、メソッドをつかまないとまず扱えないことであることが良くわかりました。 いただいた参考サイトの入門編からみっちり勉強して、改めて質問・補足をしようと思います。 本当にありがとうございます。