前の記事で述べたように、ユーザースクリプトは
すべての最新のブラウザーでサポートされ
ています 。
IE7以上で何らかの形でサポートされています。
この記事では
、ブラウザについて説明します 。
- 制限事項
- 問題
- ユーザースクリプトを実行するための拡張機能
- ユーザースクリプトの設定
エンジンについて一言
ユーザースクリプトのサポートの品質は、ブラウザーによってレベルが異なります。 ユーザースクリプトのサポートは、
Firefoxおよび
Chromeブラウザーで最適に行われます。
これらのブラウザは、ユーザースクリプトを管理するためのユーザーフレンドリーなインターフェイスを提供します。
ユーザースクリプトに対する最も厳しい制限は、
Chromeによって課されています。 ただし、これらの制限のほとんどすべては
、スクリプトを単純な拡張にパックすることで回避されます。 このプロセスの詳細については、
次の記事で説明し
ます 。
次に、個々のブラウザーでのユーザースクリプトのサポートについて詳しく説明します。
Firefoxでのサポート
Mozilla Firefoxは、
GreaseMonkey拡張機能(ロシア語のslang-
monkey )または
Scriptishをインストールした後のユーザースクリプトをサポートします。
拡張機能をインストールすると、firefoxは本当に強力なユーザースクリプトサポートを取得します。
以下の情報は主にGreaseMonkeyに適用されます(この拡張機能が最初でした)。
インストール:ユーザースクリプトは、スクリプトファイルをブラウザーにドラッグアンドドロップするだけでインストールされます。
拡張機能: GreaseMonkey 、
Scriptish 。
管理:拡張機能によって追加されたメニューでユーザースクリプトを無効にして削除できます。
機能:- 強力なGM APIライブラリがあります。
- 「ネイティブ」グローバルウィンドウオブジェクトに置き換えられました。
- ネイティブウィンドウのオブジェクト( window.page_defined_varなど)は、安全でないunsafeWindowリンクからアクセスできます。
- クロスドメインリクエストは、XmlHttpRequestインターフェイスを介して利用できます。
- globalStorageの類似物が利用可能です。
- サードパーティライブラリ(jQueryなど)を接続する機能が利用可能です。
- GreaseMonkeyプラグインのセキュリティのため、一部の機能には特定のハックが必要です。
たとえば、ajax要求ハンドラーでGM_setValue(...)を実行すると、GM APIメソッドへのアクセスエラーが発生する場合があります。 この状況を処理するために、 setTimeout(function(){GM_setValue(...)}、0)という形式の構造が使用されます。
- ユーザースクリプトをデバッグする可能性はありません 。 Firebugでもここでは役に立ちません。
GreaseMonkeyは、いわゆる
GM API-ユーザースクリプトに機能を追加するJavaScript関数のセットを追加します。
GM APIが提供する最もリクエストの多い機能のうち、言及する価値があるものは次のとおりです。
- unsafeWindowページの「ネイティブウィンドウ」のオブジェクト(ページ上の関数を置き換えたり、ページ上の既存のライブラリを使用したりできます)
- クロスドメインHttpXmlRequest: GM_xmlhttpRequest
- globalStorageの類似物(ドメインバインディングのないlocalStorage): GM_setValue 、 GM_getValueおよびGM_deleteValue
GM APIおよびGreaseMoneky機能の詳細については、
http: //wiki.greasespot.netを
ご覧ください 。
歴史的に、すべてのユーザースクリプトはFirefoxブラウザー用に記述されていたのは、まさに便利なプラグインが利用できるからです。
これは、ユーザースクリプトをサポートするすべてのブラウザ
が、GreaseMonkeyメタデータ解析仕様の基本的なルールに追加に従うという事実による
ものです。
つまり、GreaseMonkeyで作成されたすべてのスクリプトは、ユーザースクリプトをサポートするブラウザーに
インストールされ、実行されます(最小限の変更で)。
残念ながら、Firefox以外のブラウザはGM APIを提供していません。 この悲しい事実により、拡張機能または追加のユーザースクリプトを通じてGM APIエミュレーションを使用する必要があります。
「ゼロから」ユーザースクリプトを開発する場合、GM APIエミュレーション
を放棄し、自分の制作の「バイク」を使用することが望ましいと考えています。 これにより、ユーザースクリプトの依存関係の数を減らすことができ、その結果、
1つのファイルの
概念のフレームワーク内で開発できます
。1つのファイルを変更するだけで済みます。 ユーザーは、ユーザースクリプトを実行するために1つのファイルのみを必要とします。単一ファイルの概念により、ユーザースクリプトのサポートとクロスブラウザー開発の複雑さを大幅に減らすことができ
ます !
Chromeサポート
Google Chromeはネイティブスクリプト、つまり プラグイン/拡張機能は必要ありません。 ユーザースクリプトを拡張機能にパックする
ことができます(
必要な場合があります )。
インストール:ユーザースクリプトは、スクリプトファイルをブラウザーにドラッグアンドドロップするだけでインストールされます。
拡張機能:必要ありません。 拡張機能
Tampermonkeyがあり、スクリプトでの作業を簡単にします。
管理:拡張機能などのユーザースクリプトを無効にして削除できます(
設定->ツール->拡張機能 )。
機能:- Document.frames [i] .parentは使用できません( 拡張子で許可されています)。
- window.page_defined_varなど、ネイティブウィンドウのオブジェクトは使用できません(ページ関数を置き換えることはできません。JSONPもユーザースクリプトに表示されません)
- クロスドメインリクエストは利用できません( 拡張機能で許可されています)
- unsafeWindowは使用可能ですが、GM API機能は搭載していません。
- ユーザースクリプトと拡張機能の便利なネイティブデバッグ 。
拡張機能は、ブラウザ自体によってパッケージ化されたアーカイブです(
設定->ツール->拡張機能->拡張機能のパック )。
ユーザースクリプトファイルに加えて、拡張子には以下が含まれている必要があります。
- manifest.json-拡張機能記述ファイル。 アナログメタデータuserzkripa。
- background.html-拡張機能の「バックグラウンドページ」のファイル。 chrome.extensionメソッドの呼び出しを介して拡張機能APIへのアクセスを提供します。
ユーザースクリプトを拡張機能にパックする
と、 Google Chromeがユーザースクリプトに
課す多くの制限が回避されます。
重要:実際、拡張機能とユーザースクリプトは異なる概念です。 また、問題に厳密に取り組む場合は、Chrome用のシンプルな拡張機能の開発について話す価値があります。
ユーザースクリプトが非標準の「重い」機能を必要とする場合、拡張機能でパッケージ化する必要があります。
ユーザースクリプトを拡張機能にパックするには、追加のアクションを
1回実行する必要があります。 すべてのその後の開発は
単一ファイルの概念のフレームワークの中で実行されるでしょう。
Operaでのサポート
Operaはユーザースクリプトをネイティブにサポートしていますが、スクリプトを管理するための使いやすいインターフェースは提供していません。 このようなインターフェイスは、UJS Manager拡張機能で利用できます。
拡張機能:
UJSマネージャー 、
UserJSマネージャー 。
インストール:ユーザースクリプトは、ユーザーが構成したユーザースクリプトフォルダーにインストールされます。 その場所は、ブラウザの設定で設定できます:
設定->一般設定->詳細->コンテンツ-> JavaScriptのカスタマイズ 。 ユーザースクリプトフォルダーに
スペースを含めることは
できませ
ん 。
管理:ユーザースクリプトフォルダーからスクリプトファイルを削除または移動することにより、ユーザースクリプトを無効にすることができます。
機能:- ユーザースクリプトは「そのまま」実行され、クロージャーに変わることなく、ウィンドウのグローバルスコープを詰まらせます 。
- window.page_defined_varなど、ネイティブウィンドウのオブジェクトを使用できます。
- BeforeScriptなど、利用可能なOpera固有のブラウザーイベント。
- クロスドメインリクエストは利用できません( 特別なイベントを使用してバイパスされます )
- unsafeWindowは使用できません。
- スクリプトはアルファベット順に実行されます。
IEでのサポート
IE7、IE8、IE9は、
Trixieプラグインの使用時にユーザースクリプトをサポートします。
さらに、より高度な
IE7Proプラグインがあります。 ユーザースクリプトのサポートに加えて、IE7Proには他にも多くの役に立たない機能があります。
重要: IE7Proで追加の「Pribluda」を無効にしない場合、特に重いページでは、プラグインによってブラウザーの速度がかなり低下する可能性があります。
拡張機能: Trixie 、
IE7Pro 。
インストール:ユーザースクリプトは、Trixieユーザースクリプトフォルダー
(C:/ Program Files / Bhelpuri / Trixie / Scripts)またはIE7Pro
(C:/ Program Files / IEPro / userscripts)にインストールされます。
管理:各プラグインには、ユーザースクリプトを管理するためのユーザーインターフェイスがあります。
機能:- ユーザースクリプトは「そのまま」実行され、クロージャーに変わることなく、ウィンドウのグローバルスコープを詰まらせます 。
- window.page_defined_varなど、ネイティブウィンドウのオブジェクトを使用できます。
- クロスドメインリクエストは利用できません( javascript開発で使用される方法と同様の方法で回避できます:JSONP、easyXDM xdrなど )。
- unsafeWindowは使用できません。
- TrixieとIEProの両方に、GreaseMonkeyモデルとは異なるスクリプトロードモデルがあります。 Ctrl + RまたはCtrl + F5でページを更新しても、スクリプトは再起動しません 。 さらに、スクリプトはwindow.onLoadによってロードされます。
- Trixieがスクリプトを表示するには、スクリプトにメタデータがあり、 @ namespaceディレクティブが必要です( 前の記事を参照 ) 。
- IE7Proがスクリプトを表示するには、スクリプトの拡張子が.ieuser.jsである必要があります 。
- 両方のプラグインには、Windows 7x64のIE9での実行に問題があります。
未リリースのIE7Proについて、さらに多くのレポートに遭遇しました。
ご覧のとおり、IEでスクリプトを実行するのは面倒です。 そのような機会がまったく存在することを嬉しく思う。
重要:両方のプラグインは、互いに干渉することなく、同時にシステムに存在できます。
重要:上記を考慮すると、私は常にユーザーに
Trixieを使用することをお勧めします。
Safariでのサポート
残念ながら、私はこのブラウザで作業することができませんでした。 コメントの説明に喜んでいます!Safariには
SIMBLと
GreaseKitプラグインが必要だという噂があります。
Mobile Safariおよびその他のブラウザーでのサポート
人気の低いブラウザーやモバイルブラウザーではユーザースクリプトがサポートされていないため、ユーザースクリプトは
ブックマークレットの形式で提供する必要があり
ます 。
したがって、この場合はメタデータは不要であり、更新のたびにブックマークレット
を手動で起動する必要があります。
最後に
単一のファイルの概念を順守する場合、作成プロセスは次のパスに沿って進みます。
- テンプレートを取ります。
水コードとメタデータを追加します。- Chrome拡張機能用のフォルダーとファイルを作成します。
- Chromeの拡張機能をパックし、IE7Proのファイル名を変更します。
- ユーザースクリプト/拡張機能をユーザーに配布します。
- ...
手のバグを修正します。- 後藤4
記事のリスト:
- ユーザースクリプトの書き方を学ぶ
- » ユーザースクリプト。 もっと深く行きます。
- ユーザースクリプト Chromeのユーザースクリプトをパックします
- Usersctripts。 クロスドメインリクエスト