見たいファイルのパスが環境毎に異なるので何とかしたい

長い間病気で倒れておりました。リハビリエントリ。

A環境
D:/office/root/.firefox/bookmarks.html
D:/office/root/program/js/index.html
B環境
C:/home/root/.firefox/bookmarks.html
C:/home/root/program/js/index.html

  • それぞれSubversionで共有されている
  • ブックマークにはA環境の「file:///D:/office/root/program/js/index.html」が登録してある(ちなみにこのHTMLは主にJavaScriptに関するメモ。JavaScriptの実行もしたいのでHTMLファイルにメモしています)
  • B環境だと404 Not Found (゚Д゚ )アラヤダ!!

今更環境を統一するのも面倒だし、B環境用のブックマークを登録するのも嫌なので、ブックマークレットにしてしまってlocation.hrefで振り分けようと思い立つ。

index.htmlのパスはbookmarks.htmlから相対的に表せるので、Firefoxの設定からbrowser.bookmarks.fileを取得してごにょごにょやろうとしたら、chrome権限が無いとダメとか言われた。Firefoxの拡張を作ってインスコすればいいんだけど、拡張は管理が面倒になるのでボツ。

ma.laさんのAutoReloadを思い出して、XHRでやってみる。ファイルが見つかったらlocation.hrefでそこへ飛ぶ感じ。

// ※使い物になりません
function() {
    var list = ['C:/home','D:/office'];
    for (var i = 0; i < list.length; i++) {
        var uri = 'file:///' + list[i] + '/root/program/js/index.html';
        var req = new XMLHttpRequest;
        req.open('GET', uri);
        try{
            req.send('');
            location.href = uri;
        } catch(e) {
        }
    }
}

これをブックマークレット化して一旦上手く行ったように見えたのだけれども、実はこれ「file:///」なページで実行しないと

Access to 'file:///C:/home/root/program/js/index.html' from script denied

などと言われてしまってやっぱり|ι´Д`|っ < だめぽ
「予めfile:///に飛ばしておいて・・・」|ι´Д`|っ < だめぽ
スクリプトがダメなら、document.open→meta refreshで・・・」|ι´Д`|っ < だめぽ

もしどのページにいても勝手にfile:///に移動できるようになっていたらまずいからこうなっているんだよなあ、と納得。とりあえず各環境用のブックマークを追加・・・(;´Д`)ウウッ…

あとでGreasemonkeyでやってみる。



追記
Greasemonkeyで(泥臭い感じで)できた。

まず、ブックマークに登録するURIを変更。Greasemonkeyが動きさえすればいいのですが、架空のURIでは動かないので

  • A環境とB環境の両方に存在する
  • Firefoxでアクセスすることがまず無い(即座にリダイレクトされるのでFirefoxから見れなくなる)
  • HTML(ローカルファイルはfaviconWindowsのアイコンに強制されるので拡張子重要。moz-icon://?)

という条件を満たすファイル file:///C:/Program%20Files/Mozilla%20Firefox/defaults/profile/bookmarks.html を選択。
(最初は file:///C:/Program%20Files/Mozilla%20Firefox/res/hiddenWindow.html にしていたのですが、何故かGreasemonkeyがhiddenWindow.htmlだけ反応しません・・・何だろうこれ。。。)

で、上のスクリプトを.user.jsにして、@include を file:///C:/Program%20Files/Mozilla%20Firefox/defaults/profile/bookmarks.html にしてインストール。当初の目的通り、その環境に存在するファイルにリダイレクトされるようになりましたヽ(´ー`)ノ


ところでfile:///C:/みたいなフォルダURIをブックマークに登録すると、フォルダとして見せてくれる(上手く言えない)んですね。昔使っていたような記憶もありますが、今回改めて発見したので上手く使えないか考え中。