任意のサイトで任意のJavaScriptを自動実行させるChrome拡張

任意のサイトで任意のJavaScriptを自動実行させる拡張機能の紹介です。

[nakajmg/ScriptAutoRunner](https://github.com/nakajmg/ScriptAutoRunner)

## 使い道

* スニペットを実行させておきたいときに
* jQueryなどのライブラリを挿入しておきたいときに
* デバッグに

[devtools-snippets/](https://bgrins.github.io/devtools-snippets/)にある`console`を拡張するスニペットなど、スニペットをあらかじめ実行しておく必要があるものなどに使えます。

ブックマークレットなどで挿入していたjQueryなども自動で挿入することができます。

ホスト名でフィルタリングできるので、デバッグにも使えると思います。

## 使い方

まず実行させたいスクリプトを追加します。スクリプトの追加は拡張のオプションページから行います。

![オプションページ](https://qiita-image-store.s3.amazonaws.com/0/17969/38843d22-652a-87a0-d9b6-46785f26b5c1.png)

オプションページは次の3つの方法で開くことができます。

* 拡張機能のアイコンを押して歯車アイコンをクリック
* 拡張機能のアイコンを右クリックして"オプション"を選択
* 拡張機能の管理から"オプション"を選択

スクリプトはオプションページで管理します。

### スクリプトの追加

オプションページの上部にあるアイコンをクリックすると新規のスクリプトが追加されます。

![SS 2015-09-23 11.28.48.png](https://qiita-image-store.s3.amazonaws.com/0/17969/fac0b313-e1ec-367b-12b2-fa4fc64af1b0.png)

コードアイコンをクリックすると自由にコードが書けるスニペット形式のスクリプトが追加されます。リンクアイコンをクリックするとURLでJavaScriptファイルを指定する形式のスクリプトが追加されます。

![SS 2015-09-23 11.41.24.png](https://qiita-image-store.s3.amazonaws.com/0/17969/345a9e1e-edb4-b21e-f975-f4f25e10ee69.png)

#### 入力項目

入力項目は次の3つです。

* スクリプトの名前
* コード/ファイルのURL
* 自動実行させたいホスト名

スクリプトの名前は拡張のポップアップにも表示されるので、わかりやすい名前をつけておきましょう。

コードはページの`body`の閉じタグの直前に`script`要素として挿入されます。ファイルのURLの場合、`script`要素の`src`属性にURLがセットされ、同じようにページに挿入されます。

ホスト名は、スクリプトを実行させたいページを管理するために使います。例えばQiitaでだけ実行させたい場合には`qiita.com`を指定すれば、そのスクリプトは`hostname`に`qiita.com`が含まれているページでだけ自動実行されます。

![SS 2015-09-23 11.49.21.png](https://qiita-image-store.s3.amazonaws.com/0/17969/a96b6a32-6379-d8e0-d786-f465b79485f7.png)

![SS 2015-09-23 11.27.14.png](https://qiita-image-store.s3.amazonaws.com/0/17969/e48f1679-646c-7a1c-16c0-7cafd00d4fd8.png)

ホスト名が空欄もしくは`any`が設定されている場合、そのスクリプトはすべてのページで自動実行されます。


### スクリプトの有効/無効の切り替え

スクリプトの自動実行の有効/無効の切り替えはオプションページとポップアップの両方から行うことができます。

オプションページからはスクリプトから出ているプラグのような部分をクリックすることで有効/無効を切り替えることができます。

![2015-09-23 11_59_15.gif](https://qiita-image-store.s3.amazonaws.com/0/17969/1bbe0697-a537-4324-604f-071712e4b088.gif)

プラグが刺さって明るくなっている場合が有効、プラグが抜かれていて暗い場合が無効な状態です。

拡張のポップアップからも、プラグのアイコンをクリックすることで切り替えることができます。

![SS 2015-09-23 11.28.05.png](https://qiita-image-store.s3.amazonaws.com/0/17969/4ee875f1-e51b-ef27-f00a-0b618ab7184d.png)

### 全てのスクリプトの有効/無効の切り替え

一時的に全てのスクリプトを無効にしたい場合があるかと思います。そういったときには、雷のアイコンをクリックすることで、すべてのスクリプトを無効にすることができます。

![2015-09-23 12_05_28.gif](https://qiita-image-store.s3.amazonaws.com/0/17969/02710b1e-86eb-3919-817c-6502128dd273.gif)

この有効/無効は、個別のスクリプトの有効/無効の状態より優先されます。

ポップアップからも、同じように雷のアイコンをクリックすることで有効/無効を切り替えることができます。

![2015-09-23 12_10_57.gif](https://qiita-image-store.s3.amazonaws.com/0/17969/d53dd60e-4694-b0e2-c6fd-98273fdaa841.gif)

### 特定のホストで自動実行を全て無効にする

いくつかのサイトで、`script`の挿入によるブロッキングかなにがが原因で、もとのページの表示処理がうまくいかない場合がありました。

特定のホストでスクリプトの自動実行を全て無効にする場合には、オプションページの右上の歯車からオプションを開き、`External hostname`を設定します。

![SS 2015-09-23 19.36.37.png](https://qiita-image-store.s3.amazonaws.com/0/17969/e52b60d7-81a2-9886-5bd3-6096f1efe0af.png)

`External hostname`に指定されたホストでは、全てのスクリプトが実行されなくなります。

この設定は、スクリプトの自動実行させたいホストの設定より優先されます。


## おすすめの使い方

GitHubにスニペット用のリポジトリを作って、[rawgit](http://rawgit.com/)を使ってCDN経由でスクリプトを読み込むようにしておくと使いまわせて便利です。


## おわりに

[こちら](https://chrome.google.com/webstore/detail/scriptautorunner/gpgjofmpmjjopcogjgdldidobhmjmdbm)からインストールできるので使ってみてください。

バグの報告や機能の要望などあればGitHubでおねがいします。 https://github.com/nakajmg/ScriptAutoRunner/issues