Google Chromeでポップアップが急に別タブで開くようになった話
初めましてyamashitaです。その昔はDelphi書いてました。今はPHPを勉強中です。
初心者なりに気付いたことや「これから始める人も同じとこで躓くかな?」と思う事を書いていければと思います。
さて、PHPの勉強中と言ったそばから今回はJavaScriptのお話です。
2017年7月某日それは起こりました。
ポップアップが開くはずのリンクをクリックすると
・・・タブで開かれる!!
別ウインドウで開いてたものが別タブになったからと言ってそこまでかとも思いますが、
実際使ってみると元の画面の上に小窓で開かれるものと、
元の画面と同じ大きさでタブが切り替わるのでは大きく違いますよね。
この現象を直すためにも、なぜこのようになってしまったのか原因を調べました。
まずChromeのバージョンアップにより発生していることがわかりました。
当時の最新バージョンと旧バージョンで再現確認を行うと最新バージョンのみで発生していたのです。
その後諸々の手法を駆使していくと以下のコードの中に犯人がいることがわかりました。
parameters = "location=" + settings.location + ",menubar=" + settings.menubar
+ ",height=" + settings.height + ",width=" + settings.width + ",toolbar=" + settings.toolbar
+ ",scrollbars=" + settings.scrollbars + ",status=" + settings.status
+ ",resizable=" + settings.resizable + ",left=" + settings.left + ",screenX=" + settings.left
+ ",top=" + settings.top + ",screenY=" + settings.top;
//中略
window.open(this.href, name, parameters).focus();
Chromeの仕様変更によりwindow.openに上のparametersで宣言してる何かが原因でエラーが発生しポップアップしませんでした。
結論を言うと犯人はこいつです",toolbar=" + settings.toolbar
こいつをコードから削除するとちゃんとポップアップするようになりました。
詳しいエラーとか書ければよかったのですが、8/28現在、Chromeの最新版だと上の問題は起きないようです。
ということで、今一度原因を掘り起こすことができませんでした。
突然動作が変わったかと思えば、直ぐに修正される様を見て
web系の環境の移り変わりは早いなあと感じたyamashitaでした。
もしまた似たような現象が発生したら是非試してみてください。