それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

ポップアップを新規タブで開く(Opera Prestoのあれ)

Opera Prestoには「ポップアップを新規タブで開く」という便利機能があった。ポップアップブロックじゃないんだ、ポップアップブロックでも新しいウィンドウでページを開くことはできる。それを禁止して、新しいタブで開くことにするのだ

ポップアップブロックをしていても新しいWindowが開いてしまう。

金融関係のサイトに多いのですが、ログインをクリックすると幅指定&アドレスバーを隠して新規ウィンドウを開くのだ

銀行でChromeポップアップブロックが動かないわけ。

ポップアップブロックが動く条件はシンプルだ。
ポップアップを実現するのは以下の関数。window.open()にポップアップブロックが動く。

window.open( args,..)

chromeの場合、window.open()がユーザーのクリック由来で実行されたら許可される。*1

chromeの場合こんな感じになる。

  • クリックよるwindow.open() → ウインドウ開く
  • 任意のタイミングでのopen() → ポップアップブロック

window.open() がユーザークリックイベント以外で発動したら、ポップアップブロックが発動。openは全部閉じられる。
つまりユーザーのクリックが発火したノードのイベントハンドラからのopen()は実行される。
ポップアップブロックは動作しない。ウインドウが開く

ウインドウの代わりにタブを開くsafariOpera(presto)はやっぱり賢いよね。

新しいウインドウは面倒だ。タブで開く

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");


何のためのか全く理解できない。ツールバーや更に酷いのはアドレスバー隠しておいて、そのくせに不正なポップアップに注意してくださいとか馬鹿じゃないのかと思うんです。


*1:safariはちゃんと新規タブで開くのにな。