Weblog

Firefoxのソースの表示を任意のエディタで

Posted at 2004-07-03T22:17:00+09:00 in Coding

Firefoxで、閲覧中のページのソースを任意のエディタで開くという機能を提供する拡張はいくつかあるのですが、サブ・メニューにあったりするのがかったるかったり、もう探すの飽きてきたので、どうにかBookmarkletで出来ないかと画策していました。ムリっぽい・・・と思ってたけど、かなり強引なやり方で出来たりした。

とりあえずFirefoxで作ることが出来るBookmarkletそのものでは、どうもムリそうという結論に達したので、Bookmarkletから閲覧中のページのURLを引数にしてアプリケーションをうまいこと起動してやれば良いかなと目先を変えました。で、注目したのがURIスキーム。irc:などを思い浮かべればわかるように、Windowsではレジストリにきちんと設定してやれば、任意のアプリケーションを起動することが可能です。

というわけで、edit:というURIスキームをでっち上げ、閲覧中のページのURLの頭にedit://をつけるBookmarkletを作成しました。これで一段階クリアです。edit:というURIスキームを定義するレジストリ・ファイルはこんな感じです。

REGEDIT4

[HKEY_CLASSES_ROOT\edit]
@="URL:View Source Protocol"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\edit\shell]

[HKEY_CLASSES_ROOT\edit\shell\open]

[HKEY_CLASSES_ROOT\edit\shell\open\command]
@="wscript.exe C:\\Scripts\\ViewSourceByEditor.vbs \"%1\""

最後のcommandは後述のVBScriptを置く場所によって変わってきます。Bookmarkletは、新しくBookmarkを作成し、Titleを「View Source by Editor」とかテキトウに入力し、Locationに、

javascript:document.location.href='edit://'+document.location.href;

と入力するだけ。これで、http://example.com/を閲覧中にこのBookmarkletを起動すると、edit://http://example.com/にジャンプし、上記レジストリを元にwscript.exeが引数付きで起動されます。

そして今度は上記レジストリではViewSourceByEditor.vbsとなっているVBScriptの作成です。このスクリプトはedit://http://example.com/という引数付きで呼ばれるので、要は、URLを切り出してなにかのツールでソースをゲットしてやればよいことになります。ということでViewSourceByEditor.vbsのソース。

' エディタの設定
sEditor = "C:\Program Files\Hidemaru\Hidemaru.exe"
sEditor = Chr(34) & sEditor & Chr(34)

' 引数取得
Set oArgs = WScript.Arguments
sUrl = oArgs(0)
sUrl = Replace(sUrl, "edit://", "")

' ソースを取得
Set oXmlHttp = CreateObject("MSXML2.XMLHTTP")
oXmlHttp.open "GET", sUrl, false
oXmlHttp.send
sSource = oXmlHttp.responseText

' テキストファイルに吐く
Set oWshShell  = WScript.CreateObject("WScript.Shell")
Set oFileSys   = WScript.CreateObject("Scripting.FileSystemObject")
Set oWshSysEnv = oWshShell.Environment("SYSTEM")
fn = oWshSysEnv("TEMP") & "\source.html"
Set fTemp = oFileSys.CreateTextFile(fn, True, True)
fTemp.WriteLine(sSource)
fTemp.Close

' 表示
oWshShell.Run sEditor & " " & Chr(34) & fn & Chr(34)

8行目あたりまでは何のことはないですね。エディタのパスの設定と、引数を取得しURLを切り出しているだけです。URLからソースを取得するのが11~14行目。MSXMLを使うとこんなことが出来たりします(偉そうに言ってるけど知らなかった)。そして17~23行目でテンポラリ・フォルダ(環境変数から取得)にsource.htmlというファイルを作ってやり、取得したソースを吐き出してます。最後にそのファイルのパスを引数にエディタを起動(26行目)。

これでめでたくFirefoxで閲覧中のページのソースを任意のエディタで表示することができました。Bookmarks Toolbarに登録すればアクセスしやすいし、もうかなり満足。

現状では複数のページのソースを表示するとアレなことになる(source.htmlというファイルを使いまわしているため)とかいう問題もありますが、そこらへんはVBScriptを作りこめばどうにでもできると思います。

Recent entries from same category

同じカテゴリに分類された最近10件のエントリです。

  1. JSONフィードとか何とか #2
  2. 設定を外部JavaScriptファイルから読み込む
  3. del.icio.usのnetworkをツリー状に展開しまくる
  4. XPIパッケージにまとめるバッチ・スクリプト
  5. Yahoo! Search Web ServicesのJSON(P)を利用したサイト内検索
  6. Google AJAX Search APIのJSONPを利用したサイト内検索
  7. JSONPに同期リクエスト
  8. インバウンド・リンクのリスト
  9. はてなブックマークエントリー情報取得APIははてなスクリーンショットAPI(でもある)
  10. prototype.jsの開発メモとGecko DOM ReferenceのHTMLヘルプ

Comments

JavaScriptに対応または有効な環境の場合、ここにはてなブックマークでのこのエントリに対するコメントが表示されます。

Weblog archives

by Category

This page was last modified on 2005-10-15T10:14:26+09:00 (in 0.192 secs).