ガジェカツ~在宅SEのガジェット活動ブログ~

在宅SEな筆者がガジェットネタやIT、プログラミングネタを書き連ねるブログ

GoogleChromeのGreasemonkey(User Scripts)のドキュメント(仕様というか説明書?)を翻訳してみた。

修正履歴

2009-05-09:この記事へのトラックバックにて公式のドキュメントに対する訂正があったのでこちらも追記しておきました。

概要

GoogleChromeGreasemonkey(User Scripts)のドキュメントがあったので自分で理解するために英語も出来ない僕がメモの為に適当に翻訳してみた。
ミスがあったら指摘等々お願いしますm(_ _)m
元文章:http://dev.chromium.org/developers/design-documents/user-scripts

User Scripts

Chromiumの開発版では基本的なUserScriptをサポートしています。

使用するための方法:

  • Chromiumのトランクビルドをインストールするか、Devチャンネルに切り替えて下さい。
  • chrome.exeの起動オプションに「--enable-user-scripts」を追加
  • 現在のプロファイルのフォルダにUserScriptフォルダが出来ているはずです。
  • そのフォルダの中に「user.js」で終わるUserScriptを入れれば利用できるようになります。

既知の問題:

  • 現在は以下の要素が未実装です、@exclude, @require, @resource, unsafeWindow, GM_*系のAPI

Chromium でのGreasemonkeyサポートが改善されると、これらの仕様は変更されます。

追記:2.0.170(以降?)ではunsafeWindowはcontentWindowで代用できます。
http://d.hatena.ne.jp/os0x/20090318/1237375198

マッチパターン

追記:公式の仕様書が間違っているため、マッチパターンの最初の使用例、httpプロトコルに全てマッチするものは筆者が書き換えました。詳細はこちら

ユーザースクリプトChromeで実行したいページを指定する主な方法は、@matchです。その使用例は以下の通りです。

// ==UserScript==
// @match http://*/
// @match http://*.google.com/*/
// @match http://www.google.com/*/
// ==/UserScript==

@match構文の詳細な情報についてはこれらのコメントを参照して下さい。

現在、ChromeGreasemonkeyの@include構文をサポートしていますが、推奨はしていませんし使えなくなる可能性もあります。”また@includeよりも@matchの方がユーザーにはどのページで実行するのかわかりやすいので@matchを勧めます。”

追記:どうやら"include"よりも"match"の方が始めてUserScriptを読んだ人でも意味が分かりやすいということのようです。

Early Injection

ChromeのUserScriptサポートは、ページの表示時の非常に早い段階でスクリプトを走らせることが特徴です。このEarly Injection機能を利用するためには、"@run-at document-start"をユーザースクリプトのヘッダに書き加えて下さい。

// ==UserScript==
// @name My script
// @description It's really neat
// @match http://www.google.com/*
// @run-at document-start
// ==/UserScript==

ドキュメント要素(基本的には)が作成された後、他の要素が解析されるよりも前にEarly injectedを利用しているスクリプトは実行されます。

追記:要約するとページ描画前に書き換えることが可能になるということだと思われます。また解析されるよりも前ということですので、ページ内に設置してあるjavascriptによる書き換えなどの制約を受けない所か、ページ内javascriptを書き換えることなども可能になるかと(未実験)