読者です 読者をやめる 読者になる 読者になる

oAutoPagerize, LDRize, Minibufferあたりが原因でSafariが落ちる件

GreaseKit

oAutoPagerize ver 1.0のコメントSafari落ちた - soffritto::journalなどでSafariが落ちるとの報告を頂きました。
私の環境(Mac OS X 10.5.5/Safari 3.1.2)でもたまに落ちることは確認したんですが、どうにも原因を特定できていません。あと、今環境がないので、帰宅まで確認もできません。すみません。。

とりあえず、oAutoPagerizeでscrollイベントを監視する際に、0.5秒ずらしてスクロール量をチェックしている*1ところが怪しいかもと思ったので、普通にonscrollでチェックするように修正しておきました。

直ってたらいいなくらいの状態ですが、よろしければお試しください。
oAutoPagerize ver 1.0 - 0xFF

追記(2008/10/06 17:10): 残念ながらまだ落ちるみたいです。。( Thx! id:milk1000cc )

SITEINFOが500KBオーバーしていて、これが巨大過ぎるんじゃないかという疑惑が出てきたので、軽量化(wedataのURLとかの情報、インデントとexampleUrlを削除)してみました。210KB程度になっています。転送負荷の話ではないので、gzipしても意味ないし、これ以上は改行削るくらいしか出来なさそう。。
http://ss-o.net/userjs/0AutoPagerize.SITEINFO.compact.user.js

ただ、これも効果のほどはあまり期待はできなさそうです。。

追記(2008/10/06 22:10): minibuffer safariとLDRize safariのバージョンについて - soffritto::journalつっこまれた。すみません、Script中のVERSIONは本家(silog - script/LDRize)でのバージョン(しかも、userscripts.org版のほう)のものです。Minibuffer/LDRizeについてはなるべく本家のままにしたい(本家の完成度が高い & 正直手を入れている余裕がない)ので、あまり弄ってませんでした。近いうちに、本家のCodeRepos版にバージョンは上げようと思います。

追記(2008/10/06 22:56): これかなぁ https://bugs.webkit.org/show_bug.cgi?id=19451

追記(2008/10/07 01:39):importNode、adoptNode周りが怪しいっぽいので、暫定的にouterHTML経由で継ぎ足すバージョンをあげてみました(ver1.1.3.1)。oAutoPagerize ver 1.0 - 0xFFLDRizeで飛んだりする副作用があるので、1.1.3.1は下げました。すみません。

追記(2008/10/07 11:08):やはりダメか。。oAutoPagerize切れば落ちなくなるみたいだから、なんとかできるはずだと思うのだけど。
次に弄る候補:

  • document.implementation.createHTMLDocument(の使用をやめてみる)
  • window.addEventListener('scroll' (スクロール監視をやめる or unloadでイベント削除)

追記(2008/10/08 02:30): document.implementation.createHTMLDocumentが当たり(外れ)だったみたいです。HTMLDocumentではなくただのdivにhtmlつっこむ方法を試したら落ちなくなりました。というわけで、ver1.1.3.1としてあげてあるので、試してもらえると助かります。
oAutoPagerize ver 1.0 - 0xFF

*1:scroll監視は割と重いので、0.5秒おきにチェックして負荷を減らしてました