徒然日記
2012年6月16日(土)
■ [tdiary] この日記をFirefoxで見るとおかしくなるらしい
会社の同僚にちょっと前に言われたんだけれども、「この日記をFirefoxで開くとFirefoxがフリーズする」と…
「会社のPCだと平気だけど、家だとダメだ」と…
で、そのときは「うーん。なんだろうねー。変なJavascriptとか使って無いんだけどなー」と言って終わってたんだけど。ふと、Firefoxで自分の日記を開いてみたら、確かにフリーズする。
いや、正確にはメモリをひたすら確保しようとして、その間応答が無くなる。確保し続け、実メモリの空きがなくなると、メモリを解放するようで、解放した後にページのロードを再開する。
うーん…なにこれ…。
はじめルートラボの埋め込み地図の読み込み中に固まってるように見えたから、Silverlightプラグインかと思ったけど、無効にしても固まるし、そもそも地図を埋め込んでない日のページでも固まる…。むーん…
■ とりあえず
YesScriptでドメインでJavascriptの実行をOffにすると固まらなくなる。まぁ、やっぱそのへんだよな。
あと、Googleのinputtools.jsとやらを読み込んだ後でOut of Memoryになってる気がする。
しかし、このscriptはどっから呼び出されてるんだ?tdiaryのdirectoryでgrep -rしてもでてこねぇ
■ 犯人は
Googleカスタム検索だった。
<form action="http://www.google.com/cse" id="cse-search-box"> <div> <input type="hidden" name="cx" value="015666267071144837436:03im49nutf8" /> <input type="hidden" name="ie" value="UTF-8" /> <input type="text" name="q" size="24" /> <input type="submit" name="sa" value="検索" /> </div> </form> <script type="text/javascript" src="http://www.google.com/jsapi"></script> <script type="text/javascript">google.load("elements", "1", {packages: "transliteration"});</script> <script type="text/javascript" src="http://www.google.com/coop/cse/t13n?form=cse-search-box&t13n_langs=ja"></script> <script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=cse-search-box&lang=ja"></script>
というコードを(昔から)サイドバーに埋め込んでいたんだけど、これがinputtools.jsを読み込んでて、たぶん634444 – Long lines with many warnings from javascript.options.strict cause memory spikes when a console or Firebug is in useというbugに当たって、メモリを食いまくってたんじゃないかと思う。
Googleカスタム検索のページを見てみたら、貼り付けるコードが全然変わっていたので、貼り直してみたらinputtools.jsを読み込まなくなって、平気になった。
というか、
<script type="text/javascript">google.load("elements", "1", {packages: "transliteration"});</script>の部分でloadされてるんじゃないかと思うんだけど(transliterationとinput toolsの関係が単語的に深そうなので)、これ、昔から書いてあったっけかな…。あるときから、なぞの日本語変換が付いてるなーとは思ったんだが。
とりあえず、直って良かった。