Firefox以外のGreaseMonkeyユーザスクリプト実行環境
Firefoxには、ウェブページのGUIをカスタマイズするユーザスプリプト実行環境Greasemonkeyがあります。私もユーザスクリプトを2つ公開しています。最近はWindows環境のIEやChromeを使うことがありますので、そこでもユーザスクリプトを使うことができないか、と思い、調査してみました。
IEとChromeに関してはGreasemonkey互換環境があり、YahooAuctionSは問題なく動作しました。
インターネットエクスプローラ
IEには2種類あるようです。TrixieとGreasemonkey for IEです。ネイティブな記述言語は、前者はJavascript、後者はDHTMLです。Trixieのほうが歴史が古く、Greasemonkeyとの互換性という点では良さそうです。
Trixie
Trixieは外部プログラムになっており、インストールもMSIファイルになります。インストールすると、「ツール」メニューの中に"Trixie Options..."というメニューが追加され、設定を行うことができるようになります。ユーザスクリプトは、<<C:\Program Files\Bhelpuri\Trixie\Scripts\>>にコピーすれば自動的に読み込まれます。(読み込まれない場合、Trixie OptionsでReload Scriptsボタンを押します)。
YahooAucitonSしか動かしていませんが、特に動作に問題はないようです。
Google Chrome
今年の春に組込み機能としてサポートされたようです。基本的に環境のインストールは必要がなく、ユーザスクリプトをファイルとしてブラウザに読み込ませることでインストールされ、それ以降はスクリプトが動作するようになります。こちらもYahooAuctionSの動作には問題はありません。
しかし、一つ問題があります。それは、ユーザスクリプトがインストールされるフォルダのパスが可読な形式でないことです。例えば、私のところでは、こんなパスです→<<C:\Users\XXXX\AppData\Local\Google\Chrome\User Data\Default\Extensions\ecegpedmokfjpiaofpacmkejhjfidfbf\1.0\>>。つまり、Extensionsの下に直に(他のAddOnと同列に)置かれてしまい、かつ、GUIDのような無意味な文字列のフォルダ名にされてしまいます。しかも、その下は、"manifest.json"と"script.js"とファイルが自動生成されています。(後者はyafooauctions.user.jsをリネームしたもの)。このため、どこにインストールされたかは、ファイルを開けて捜さないと分りません。
現在、YahooAuctionSは設定UIを持たず、設定変更はスクリプトファイルの直接編集になっていますので、ファイルの場所が分らないというのは問題です。設定UIを開発しないと一般ユーザには使っていただけない状況かと思います。
おまけで更新しました。マイオークションメニューの「値下げ交渉」リンクを「検索履歴」に差し替えることができるようになります。「値下げ交渉」というのは使われているのでしょうか? 検索履歴は良く使うので代りにメニューに入れました。
var SUBSTITUTE_OFFERDISCOUNT_TO_SEARCHHISTORY = true;
とすることでメニューが切り替わります。
yahooauctions.user.js
※ (7/7追記 前回「終了したウォッチリストの削除から戻る」が間違ったページに戻るようになっていたのを修正)
blogシステムserendipityをchromeで編集できるようにするパッチ
Chromeブラウザでserendiputyの管理者スィートを立ち上げた場合、警告(alert)が度々表示される不具合があります。"mozilla < 1.3 beta is not supported"というものです。これをfixするパッチを作りました。
serendipity-chrome.patch
これは、Safari系ブラウザに共通なもののようです。このアラートは、Geckoエンジン(SafariはKHTMLのような?)の場合に、リリース日時を調べて、一定以上昔の場合に表示されています。通常はこれでOKなのですが、Safariの場合はちょっと動作が違っていて、初期リリース(1.0版)のリリース日時を返すとのこと。このため、必要以上に古い日時が返されて警告が表示されていました。
Safari系のブラウザ(Safari, Chrome)は新しく、時期的に"< mozilla 1.3"とかいうことはありませんので、単純に警告を抑制することにしました。実際には、AppleWebKitを使っているものに対して抑制します。調べていませんが、このモジュールが上記動作をしていると思われます。
もしかしたら、serendipityの最新リリースでは直っているかもしれません。(ソースコメントに、この部分の実装が不完全なことが注記されていますので)