● 発生した現象
2012年の8月ぐらいから、Chromeのタブの切り替えがおかしくなっていました。
具体的に言うと、以下のような現象が発生していました。
・タブを閉じても、そのタブの画面が表示されっぱなしになる。
・新しいタブを開いて、素早くそのタブを見ると、画面がグレー一色になる。
・新しいタブを開いて、しばらく経ってそのタブを見ると、画面が直前のタブのままになる。
明らかなレンダリングのバグなので、そのうちバージョンアップで解決するだろうと思っていたのですが、2ヶ月経っても解決しませんでした。
色々と調べていて原因が不明のままだったのですが、先日ようやく原因が分かったので、ここに情報をまとめておきます。
ネットを探しても言及している情報がなかったので、他の方にも役立てばと思います。
● 原因
原因は、Flashのプラグインです。
Chromeでは、「Google Chrome 21」でPPAPIという方式のFlashプラグインを採用しました。
□「Google Chrome 21」では“PPAPI”を採用、Windows XP環境でもFlashが高速・安全に
サンドボックス機能やGPUアクセラレーションを活用したレンダリングが可能(2012/08/09)「PPAPI(Pepper Plugin API)」は、特定のプラットフォームに依存せずにネイティブな機能を実現するための、新方式のFlashプラグインだそうです。
これまでは、「NPAPI(Netscape Plugin API)」と呼ばれる、古い方式のFlashプラグインが使われていました。
この新しい「PPAPI」は、Chromeをバージョンアップすると自動で付いてきます。そのため、Chromeには、2つのFlashプラグインが同居する形となります。
□【Flash】最新版Google Chromeが重い!!【スクロール】 その2つのFlashプラグインが同居している様子は、URL欄に「chrome://plugins/」と入力して、[詳細]を開くと見ることができます。
デフォルトでは、この「PPAPI」と「NPAPI」が2つとも有効になっています。
以下推測ですが、そのため、新たなタブを開くたびに、Flashのプラグインが2つ適用されるみたいで、ページを開くのが異様に遅くなるようです。
そのために、レンダリングのタイミングと、それがタブ内の画面に反映されるタイミングがずれてしまい、タブを切り換えても画面が切り換わらないという現象が発生しているようです。
● 実験
この問題を解決するには、この2種類のFlashプラグインの内、どちらかを[無効にする]ということになります。
というわけで、2つのケースを試してみました。
・「PPAPI」を無効にして「NPAPI」だけを有効にする。→タブ切り替え時のバグが解消。
・「NPAPI」を無効にして「PPAPI」だけを有効にする。→タブ切り替え時のバグは変わらず。
というわけで、新方式の「PPAPI」に問題があるようです。
● 対策
1.ChromeのURL欄に「chrome://plugins/」と入力する。
2.[詳細]を開いて、Flashの欄を確認する。
3.「PPAPI」を無効にして、「NPAPI」を有効のままにする。
これで、タブ切り替え時のバグは解消します。
プラグインの設定画面を見ると、「PPAPI」よりも「NPAPI」の方がバージョンは上なので、セキュリティ的な問題は、そこまで大きくはないと思います。
ただ、「PPAPI」の方が、「NPAPI」よりもセキュリティ的に優れているそうです。その内、「PPAPI」の表示の不具合が解消されれば、「PPAPI」を使用するようにした方がよいと思います。
また、ネットの情報では、Chromeのバージョンアップタイミングで、「PPAPI」が有効になってしまうと書いてありました。その際は、手動で再び「PPAPI」を無効にする必要があります。
というわけで、「Chromeのタブ切り替えで、前の画面が残るバグへの対策」をまとめてみました。