SafariでoAutoPagerizeが動かなくなっていた件
WebKitのデバッガが超絶便利になっている件
WebKitのデバッガはDroseraという別アプリで提供されていましたが、つい最近(2008/05/16)本体とセットになるようになりました。
このデバッガがヤバイです。(画像でかくて自分のモニタでもはみ出してるけど気にしない)
- 開発のWebインスペクタを開いてから、Scriptsを選択するとDebuggerを起動するか聞かれる
- Attach Debuggerをクリックすると左上に読み込んでるScriptがリストになっている。(eval script)となっているのはGreaseKitが実行するScriptの模様。
- GreaseKitのScriptもちゃんとソースが見えるし、
- 左下の蟻アイコンが青くなっているとエラー(?)のあった箇所でPauseする。右上にPausedと出ていて、この左のボタンでステップ実行とかが出来る。
- 右側にはローカル変数とクロージャで保持されている変数がスコープごとに区切られて見える。
Greasemonkey Scriptのステップ実行や、スコープごとに区切って変数を表示してくれるのは私の知る限りWeb Inspector's debuggerだけ。WebKit用Greasemonkey Scriptがものすごく開発しやすくなるので、またやりたいことが増えました。とりあえず、Safari用LDRize、Minibufferが重いのはこれで解決できそうな気配です。
- わからないこと
- ブレークポイントの設定の仕方(現状できない?)
- Pauseする条件もイマイチ
- ところで、こいつの名前はWeb Inspector's debuggerでいいのかな?
なお、WebKit nightlyは開発版なので、おそらく(間違いなく?)不安定です。お試しは自己責任でお願いします。
追記
今日nightlyの33980入れてみたら、今度はProfilesタブが追加されて、consoleにprofileとprofileEndが追加されていました。
画像はoAutoPagerize、LDRize、Minibufferにconsole.profile入れてみたところ
LDRize and Minibuffer for Opera, Google Chrome and GreaseKit(Safari)
LDRizeのOpera、WebKitへの移植版です。SITEINFOファイルは定期的に更新されているので、適当にアップデートしてください(Windowsの場合、バッチでどうぞ)。
for Opera
- http://ss-o.net/userjs/0minibuffer.js
- http://ss-o.net/userjs/0LDRize.SITEINFO.js
- http://ss-o.net/userjs/xldrize.user.js
http://ss-o.net/userjs/ldrize.opera.js
http://ss-o.net/userjs/minibuffer.opera.js
for Google Chrome2, GreaseKit(Safari3+)
- http://ss-o.net/userjs/0minibuffer.user.js
- http://ss-o.net/userjs/0LDRize.SITEINFO.user.js
- http://ss-o.net/userjs/xldrize.user.js
http://ss-o.net/userjs/ldrize.safari.user.js
http://ss-o.net/userjs/minibuffer.safari.user.js
※Opera用とWebKit用でファイル名が違いますが、中身は基本的に同じです。
※Safariでの動作が不安定のようで、一部サイトが表示されない、異常に重くなるなどの不具合が発生するかもしれません。お手数ですが、除外サイトとして指定する、Bookmarkletとして使うなどで対応してください。
soh335
soh335
- 2009/05/10 11:50
LDRizeのSITEINFOがwedataに移転した件に対応しつつ、本家のバージョンアップに追従しました。ファイル名が変わっているので、旧バージョンはアンインストール(削除)してください。 - 2008/02/29 13:37
Minibufferのコンソールが開かない不具合を修正しました - 2008/02/12
パラグラフが大量にあるページ*1を開いたときにブラウザが固まってしまうのを防ぐために、SITEINFOのマッチングを簡略化して、高速化を図ってみました。今のところ問題なさそうなんですが、もしかすると副作用があるかもしれません。。 - 2008/02/12
LDRizeの実行タイミングをonloadに変更(画像のロードなどを待つことになりますが、他のScriptへの影響を小さくできるので、試験採用)。 - 2008/02/11
Safari版で、GoogleなどXPathにid関数を使っているページで動かなかった問題に対応しました。修正は主にMinibufferのほうですが、両方更新してください。修正に当たって、jAutoPagerize( http://coderepos.org/share/log/lang/javascript/userscripts/jautopagerize.user.js? )を参考にさせていただきました。多謝。 - 2008/02/04
Opera版とSafari版を区別して、Safari版の名前を変えました。 - Safari & GreaseKit1.4でも一応動くようになりました。
コマンドの補完が効かないけど。。コマンド補完できるようになりました
oAutoPagerizeと同じく、LDRizeの中にSITEINFOを埋め込んでいます。実行される順番は意識しないでも問題ないようにしてあります。2つ以上Pinして開くとポップアップブロックに引っかかるので注意です。回避できました。
とりあえず入れてみて、Googleで検索して適当にj,kを押してp押してoとか押してみればよいと思います。矢印キーやTABキーなどのデフォルト動作をキャンセルできていないのは仕様です。。なんとかしたいところですが。Operaではinput@type=textではなく、textareaを使うようにして対応しました。
まあ、なんとか動作するようにしたというのが現状で、近日中に細かいところに手を入れる予定です。*2
Safari3*GreaseKit1.4用のGM関数
?D of Kをベースに。
if (typeof(GM_addStyle) != 'function') { function GM_addStyle(css) { var head = document.getElementsByTagName('head'); if (!!head) { var style = document.createElement('style'); style.type = 'text/css'; style.textContent = css; head[0].appendChild(style); } } } if (typeof(GM_setValue) != 'function' && typeof(GM_getValue) != 'function') { function GM_setValue(name, value) { document.cookie = [ name, '=', escape(value), ';expires=', (new Date(new Date().getTime() + 365 * 1000 * 60 * 60 * 24)).toGMTString() ].join(''); } function GM_getValue(name, value) { var r = new RegExp(name + '=([^;]*)'), m; if (m = document.cookie.match(r)) { return unescape(m[1]); } return value; } function GM_delValue(name, value) { if (GM_getValue(name, false)) document.cookie = name + '=;expires=Thu, 01-Jan-1970 00:00:01 GMT'; } } else { var GM_delValue = GM_setValue; }
GM_addStyleはstyle.innerHTMLをtextContentに変えただけ。
GM_setValueはnew Date() + 365 * 1000 * 60 * 60 * 24をnew Date().getTime() + 365...に修正。
GM_getValueの正規表現に余計な/が入っていたのでそれを削除。
以上です。
[追記]
あ、もちろんOpera9.25でも使えます。
Userjsでクロスブラウザを考えるなんて! と思う部分もありますが、仕方ないですね。
[/追記]
はてなハイク用GreasemonkeyをSafari3対応に
はてなハイク用GreasemonkeyをOpera対応に - 0xFF関連。
g:subtech:id:cho45 さん作の
Haiku の Reply を全部展開する Greasemonkey - 冬通りに消え行く制服ガールは✖夢物語にリアルを求めない。 - subtechがやはりGM関数の都合でGreaseKit1.4では動かないので、対応した。
http://ss-o.net/userjs/hatena.haiku.expandrepliestree.user.js
はてなハイク用GreasemonkeyをOpera対応に - 0xFFのやつを一箇所弄っただけ。
あと、Autopagerize for Haiku. - #生存戦略 、それは - subtechのほうはそのまま動いたけど、一応再掲。
http://ss-o.net/userjs/hatena.haiku.autopagerizeforhaiku.user.js
あ、もちろん両方ともFirefoxでも動きます。たぶん。
Safari3 * GreaseKit1.4 でoAutoPagerize
GreaseKit 1.4でセキュリティの問題からGM関数が削除されました。GreaseKit および Creammonkey の GM 関数に関する脆弱性
そのため、jAutoPagerizeなど多くのScriptが動作しなくなっています。*1
そこで、同じくGM関数がない前提で作成しているoAutoPagerizeを動かしてみました。
インストールはoAutoPagerize - 0xFFからどうぞ。
- Opera用は.jsでしたが、こちらは.user.jsに
- 例によって数時間おきにSITEINFOが更新されています
- Safariだとheadタグ内のlinkが消えてしまうようで、はてなダイアリーなどで3ページ目を取得できません
- はてなダイアリーのSITEINFOを本体に持つようにしたので、ダイアリーでも動作するようになりました
jAutoPagerizeを参考にして、とりあえず動くようにしたレベルなので、バグがあったりしてすぐに修正が入るかもしれません。ご了承を。
なお、今まで書いたいくつかのUserjsもSafari3対応を進めているので、順次公開していく予定です。
セットで OperaとSafariでLDRizeとMinibuffer もどうぞー
はてなハイクについてははてなハイク用GreasemonkeyをSafari3対応に - 0xFFもどうぞ
*1:自己責任で旧バージョンを使うことを止めはしませんが、とてもオススメはできません