2015年9月22日火曜日

open()とopenDialog()に表示されているハイパーリンクの挙動の違い

プログラム作成中に挙動の違いを発見したので報告いたします。

今回はポップアップウィンドウのリンクの飛ばし方の違いについてです。

注意!使用しているブラウザはFirefox 40.0.3ですので、他のだと挙動が違うかもしれません。

現在作成中のプログラムでは、ポップアップウィンドウを表示させて、そのウィンドウ内にハイパーリンクがあり、それをクリックした場合に呼び出し元のウィンドウに新しいタブで表示させる。という挙動を実現させなければなりません。

ところで、ポップアップウィンドウは当然にjavascriptで呼び出す訳ですが、それには二通りのやり方があります。それが以下

1.window.open()
2.window.openDialog()

この二つのパッと見の違い(あまり深い違いまでは調べていません)は、openDialogの方はメニューバー、ツールバー、ロケーションバーが表示されないというところにあります。
それに対してopenの方はそれらの表示をパラメータで選択できるようになっています。
僕は当初、選択できる事を知らず、それらを表示にopenDialogの方を使っていました。



で、ここからが本題。それぞれのポップアップウィンドウ内でどの様な違いが起きるかと言う点です。
今回はポップアップウィンドウ内に以下のハイパーリンクが表示されていたとしましょう。

<a href="http://google.co.jp" target="_blank">Google</a>

グーグルを新しいタブ/ウィンドウで表示させるハイパーリンクです。
これをクリックした時に以下のような違いが出ました。

open()の場合:
新しいウィンドウが作成されて表示される

openDialog()の場合
呼び出し元のウィンドウに新しいタブが作成されて表示される。


なんだこれ?
openDialog()を当初使っていた僕は、ウィンドウ名を指定してリンクを飛ばさないといけないのかーっ!とか思って色々と試行錯誤してたんですが、一向に上手く行かなかったんですね。
で、ふとopen()でツールバー等の表示の選択が出来る事を知り、そちらで試してみたらあっさり上手く行きまして。

発見してすぐこの記事を書いているので、正直原因とか全然調べてないんですが、とりあえずFirefoxではこう言う動きをするみたいです。原因が分かったら追記します。
他のブラウザでの挙動も試しておりません。試したらまた追記しておきます。

この現象について分かる方いましたら、コメントなどでフォローいただけると、僕を初めとする多くの迷えるプログラマが助かります。

0 件のコメント:

コメントを投稿