gmperator (= vimperator + greasemonkey) plugin
最新版はhttp://coderepos.org/share/browser/lang/javascript/vimperator-plugins/trunk/にあります。
スクリプトのロード(
設定変更(
またまたvimperatorのプラグイン。今度はGreasemonkey絡み。
先日(Greasemonkeyのソースがかなりアレな件)により、外部からユーザスクリプトを挿入する手段が分かったのでプラグイン化。というか、これが目的でGreasemonkeyを調べていた。
スクリプトのロード(:gmlo[ad]
コマンド)
:gmlo[ad]
コマンドでスクリプトをロードできます。引数にスクリプト名またはファイル名を指定してください。
ただし、ロードはしてもload
イベントなどは発行しません。場合によっては即時実行するように事前にスクリプトを編集する必要があるでしょう。
設定変更(:gmset
コマンド)
:gmset
コマンドによりgreasemonkeyの設定を変更できます。
- gmset!
- greasemonkeyの有効/無効をトグルします
- gmset! filename
- 指定したファイル名のスクリプトの有効/無効をトグルします
- gmset filename options
- スクリプト名や実行する/しないページの設定を変更できます
options
- n[ame]=scriptName
- スクリプト名をscriptNameへ変更します
- i[nclude]=expr[,expr,..]
- 実行するページの変更をします。リストは
,
区切りで指定できます - e[xclude]=expr[,expr,..]
- 実行しないページの変更をします。リストは
,
区切りで指定できます
例
:gmset! hogehoge.user.js n=HOGEHOGE i=http://*,https://* e=http://example.com/*
- 有効/無効のトグル
- 名前を"HOGEHOGE"へ変更
- 実行するページを"http://*"と"https://*"に変更
- 実行しないページを"http://expample.com/*"に変更
の4つを同時に設定します。
余談
このプラグインの作成の目的として、現状のGreasemonkeyではページのリロードを行わないと設定が反映されないという不満があり、途中からでもスクリプトの実行をさせたいというのがありました。が、多くのユーザスクリプトがload
イベントをトリガーに実行されているように思います。スクリプトのロード時に
var loadEvent = document.createEvent('Events'); loadEvent.initEvent('load',true,true,window.content.document,1); window.content.document.dispatchEvent(loadEvent);
等としてあげれば、擬似的にload
イベントを発行できますが、他のスクリプトにも波及してしまうため断念することとなりました。
この辺り、どうにかならないかなと思ったり。