IE8 で IE7Pro を使うには
まとめ。
IE8 に IE7ro を組み込んだ時にいくつかの機能が正常に動作しなくなります。
これを IE7 と同様に正常に動作させるには、
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\MAIN に TabProcGrowth を DWord で作って「1」を設定すれば OK 。
すべての不具合が解消するかどうかは未確認ですが、マウスジェスチャの「タブを閉じる」などの動作は正常になりましたよ。
詳細。
猿頁 » Blog Archive » (138) 転びブラウザ を見ると、私が Sleipnir を使い出したのは 2005 年のようです。
IE のよけいな機能をそぎ落とし+Webブラウズに便利な機能を多数追加した Sleipnir は、当時の私のニーズにかなりマッチしていたように思います。
が。
IE8 が高速性やアクセラレータ等のオモシロい機能をひっさげて登場してきたんですが、Sleipnir がどうもそれらをうまく吸収できないわけです。
あたらしもん好きな私としましては、IE8 のメリットもぜひ満喫してみたい。
そもそも Sleipnir とかそのへんに乗り換えたのはタブブラウザだってのが一番の理由だったわけですから。だったら IE8 も十分候補にできるんじゃね?
みたいな。
てことでひさびさに IE8 を直接起動してみたんですが、5 秒で挫折。
マウスジェスチャがありません。
いろんなページをざくざくと開きまくってざくざくと閉じまくる使い方に慣れてしまった私にとって、いちいちタブ領域までマウスを運ばないとページを閉じられない、というのはなかなかツラいものがあります。
ので、IE7Pro を導入してみることにしました。
おおお、これで IE でもマウスジェスチャが。と思ったんですが。
だめだ「タブを閉じる」が変な動きをする。
正確には、表示されていたページは確かに閉じるんですが、タブそのものは残って「空白のページ」(または「新しいタブ」を起こしたときに表示される初期ページ)になってしまうんですね。
たまに望み通りタブ自体が閉じられることもあり、どうも不安定な動作に思えます。
IE7Pro のフォーラムを読むと、やはり同じ状況になっている方はけっこういらっしゃるようで、「だからはやく IE8Pro をリリースしてくれ」「いや、俺んとこではちゃんとタブも閉じるよ?」とかなかなか活発で不毛な議論がせめぎ合っておりまして。
対処法は、littlegirls さんが提示してくださっておりました。
IE7Pro Forum / IE7pro + IE8 + Loosely Coupled IE = IE7pro does not always load
IE8 では、タブごとに別プロセスが起動するようになっています。
これで、どこかのページがフリーズ起こしても、そのタブだけを落として他のタブは生き残るというハングアップ対策になっていたりするんですが。
一方で、IE7 まではすべてのタブが同じプロセスで起動されていました。
この状態でタブを閉じ続けると、最後のタブを閉じたときに IE のウィンドウそのものも閉じるという動作になります。
IE7Pro はこの IE7 の動作を前提に作られているアドオンでして、「タブを閉じる」動作にはどうも「タブがひとつしかない場合にはページは消すがタブそのものは残す」という制御が入っているようです。これで、連続してタブを閉じていっても、IE ウィンドウ自体は終了させない、という状況を実現しているみたいなんですね。
別ブラウザの某アドオンではこの制御が組み込まれておらず、連続でタブを閉じる操作をするとうっかりブラウザ自体を終了させてしまうことがあり、そのつど再起動させなければならないわずらわしさにうんざりしたことがあったので、これはこれでナイス制御だとは思います。
が、この「最後のひとタブ」を、IE7Proではどうも「プロセス内にタブがひとつだけある場合」という条件で判定しているようなんですね。
IE7 であればこれはほんとに最後のひとタブを判別できるんですが、IE8 ではタブがそれぞれ独立したプロセスの「最後のひとタブ」になっているために、「ページは閉じるがタブは残す」という動作になってしまっている、ということなわけです。
加えて、IE8 ではタブごとに「必ず」別プロセスを持つ、というわけではありません。
原則として別プロセスになりますが、同じサイトの別ページだったりした場合には同一プロセス下に複数タブを担当させることもあるようです。
この場合は1プロセスに複数タブが存在しますので、IE7Proの「タブを閉じる」動作は、ほんとにタブを閉じたりします。
ページ内リンクを別タブで開くとサイトが違っても同じタブグループになったりもしますので、グループが同じであっても必ずしもプロセスが同じというわけではありません。よって「同じタブグループだからタブごと閉じるだろう」など見た目から判断することができず、「タブが閉じたり残ったり、動作が安定しない」ように見えてしまうために、納得できない感がいや増したりします。
ソースをたどったわけではないので、いろんな条件で試して観察してみた結果としての推測でしかありませんが、まあたぶん合っているんではないかと思います。
で、どうすればいいかというと。
ひとつのIE ウィンドウの中のタブを、すべて同じプロセス内で管理するように IE8 の設定を調整すればいい。ということになります。つまり、
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main に DWord で TabProcGrowth を作って、値を 0 または 1 にしろ
ということですね。
0 と 1 の違いは、私は正直よくわかっていません。0 だと IE のメニューや各種ボタンの動作まで同一プロセス、1 だとタブのみが同一プロセス(IE の操作系は別プロセス)みたいな感じらしいんですが、具体的に明確な説明をしているページを見つけることはできませんでした。
0 だと保護モードが有効な時に設定が無効になるとか、デバッグの際には 0 にしろとか(1 ではダメな理由に言及しているサイトは見つけられませんでした。このへん、無責任な伝言ゲームになっている可能性があります)ちょっと裏が取れない情報が散見されます。
このややこしさの元となる IE8 の新機能は LCIE と呼ばれており、IE開発チームが割と早い段階で概念について blog で言及されています。
原文はこちら、日本語訳版はこちら。
でまあ、とりあえず 1 で十分 IE7Pro は従来の動作になるようです。0 にまでする必要はなさそうですね。
ただ、IE7Pro のすべての動作を確認したわけではありませんので、あるいは 1 では正常に動作しない機能もあるのかもしれません。
そんな場合には、0 に切り替えて試してみるのもひとつの手だとは思います。
おまけ。
マウス中クリックでリンク先をタブで開くことはできるんですが、アクティブは元タブのままであり、開いた側のタブがアクティブになりません。
私の場合は開いた側をすぐ見たいことの方が多いので、アクティブが移動してほしいわけです。
これは拡張の必要はなく、IE8 そのものの [インターネットオプション] → [全般]タブのタブの[設定] → [タブブラウズの設定]ダイアログの [タブブラウズを有効にする]と[新しいタブの作成時には常に新しいタブへ移動する]にチェックをつければ OK でした。
ついでに、検索プロバイダは現在 Bing がどこまでツカエるかお試し中です。
もう少し調べものや blog 書きに便利な機能を組み込んでおきたいので、しばらくいろいろとイジってみようと思います。
