October 21, 2002

新しいウィンドウが開くと、IEがフリーズする

私が使うWindows2000は、Internet Explorerを長く使い続けていると、そのうち必ず、新しいウィンドウが開くときに数秒から数十秒間フリーズしてしまう現象が生じるようになってしまいます。これについてKnowledge Baseなども調べたのですが、該当する情報を見つけることが出来ませんでした。(私が使う殆どのマシンで発生するほど再現性が高い不具合なんですけどね)

とはいえ毎回発生するわけではないので、どんなときに発生するのか、条件を調べていました。そうしたところ、分かったのは、ウィンドウを開く命令 (window.openや<a href=>など)で、targetが_blank以外になっている場合に発生するということです。(但し、既にそのtarget名のwindowが開いている場合には発生しません。)

であれば、targetが必ず_blankになるように細工してやれば良いのです。そこで、愛用しているProxomitronを利用して、targetを必ず_blankにするFilterを書きました。以下にそのコードを載せます。

---for window.open

Bounds Match: window.open(*)
Matching Expression: \1\window.open\s+\(\3,'_blank',\2
Replacement Text: \1window.open\(\3,'_blank',\2

---for <a ... target='hoge'>

Bounds Match: <a\s*>
Matching Expression: \1target=$AV((^_top)&*)\2
Replacement Text: \1target='_blank'\2

こんな暇があったら、仕事しろって? ごもっとも。
適当にでっちあげたので、うまく動作するか自信がないですが。
これでMTもより快適に使えるようになりました。

Proximitronの正規表現もどきはPerlとも大きく異なるので苦労しました。
こんな苦労をしなくても、Netscape7とか使えばいいのかな?

Posted by arai at October 21, 2002 05:07 PM
Comments
Post a comment














Please enter this 6digits Security Code (for SPAM's sake...).
spam対策のため6桁のセキュリティコードを入力してください。