Opera Prestoには「ポップアップを新規タブで開く」という便利機能があった。ポップアップブロックじゃないんだ、ポップアップブロックでも新しいウィンドウでページを開くことはできる。それを禁止して、新しいタブで開くことにするのだ
ポップアップブロックをしていても新しいWindowが開いてしまう。
金融関係のサイトに多いのですが、ログインをクリックすると幅指定&アドレスバーを隠して新規ウィンドウを開くのだ
銀行でChromeポップアップブロックが動かないわけ。
ポップアップブロックが動く条件はシンプルだ。
ポップアップを実現するのは以下の関数。window.open()にポップアップブロックが動く。
window.open( args,..)
chromeの場合、window.open()がユーザーのクリック由来で実行されたら許可される。*1
chromeの場合こんな感じになる。
- クリックよるwindow.open() → ウインドウ開く
- 任意のタイミングでのopen() → ポップアップブロック
window.open() がユーザークリックイベント以外で発動したら、ポップアップブロックが発動。openは全部閉じられる。
つまりユーザーのクリックが発火したノードのイベントハンドラからのopen()は実行される。
ポップアップブロックは動作しない。ウインドウが開く
新しいウインドウは面倒だ。タブで開く
shift やctrl 押しながらクリックしたらいい。
押すのも面倒だ。拡張機能だ
というわけで、ブラウザ拡張書いた。Prestoでいうポップアップを新規タブで開くを再現するわけだ。
https://github.com/takuya/PopupToNewTab
そもそも、 toolbar=no , menubar=no とか書いてるのが頭おかしいと思う。
つぎのはソニー銀行ログインの表示だ。
window.open(uri ,winName,"width=" + wid + ",height=" + hi + ",,location=yes,directories=no,status=yes,menubar=no,resizable=yes,scrollbars=yes");
何のためのか全く理解できない。ツールバーや更に酷いのはアドレスバー隠しておいて、そのくせに不正なポップアップに注意してくださいとか馬鹿じゃないのかと思うんです。