UserJS。 パートI:はじめに

これは、Opera用のカスタムスクリプトの記述に関するシリーズの最初の記事です。 当初、単一の記事が計画されていましたが、すでに10画面を超えており、まだ追加されています。



記事は、javascriptとDOMをよく知っている読者を対象としています。 userjsでjavascriptを使用する機能のみが説明されています。



定義



Userjsは、各ページが読み込まれる前にOperaによって実行されるjavascriptスクリプトであり、そのコンテンツを変更できます。



Operaのセットアップ



最初は、Operaのインストール後、スクリプトへのパスが設定に登録されていないため、userjsを使用するには、設定([詳細]タブ→[コンテンツ]タブ→[JavaScript]ボタン→[カスタムスクリプトのJavaScriptフォルダー]フィールド)に移動し、パスを指定する必要がありますスクリプトフォルダに。

これは、「opera:config#UserPrefs | UserJavaScriptFile」の設定ページでも実行できます。



セキュリティのため、httpsアクセスでのuserjsの実行はデフォルトで無効になっています。 必要に応じて、設定でこれを変更できます(「opera:config#UserPrefs | UserJavaScriptonHTTPS」)。



Userjsの実行順序



Operaは、指定されたフォルダー内のすべての* .jsファイルをダウンロードして実行します。 したがって、スクリプトを無効にするには、拡張子を変更するだけです。 起動順序は、Opera 9、Opera 10、およびアルファベット順では定義されていません。



フォルダーは、ページが読み込まれるたびにスキャンされます。 スクリプトを追加、変更、または削除する場合、Operaを再起動する必要はなく、ページをリロードするだけです。



すべてのuserjsは、名前が「.user.js」で終わるスクリプトを除いて、ページがロードされる前に実行されます-GreaseMonkeyとの互換性のためにページがロードされた後に実行されます。



userjsのスペル



帽子


帽子はオプションです。 ヘッダーは、スクリプトと作成者に関するさまざまな情報、およびスクリプトを実行する( include )またはしない(@exclude)アドレスパターンを示します。 デフォルトでは、スクリプトはすべてのページで実行されます。



スクリプトが特定のサイトでのみ有用である場合-アドレスを確認する代わりにincludeを使用すると、これは高速になります。



 // == UserScript ==
 // @nameクールスクリプト
 // @descriptionいくつかのクールなことをします。
 // @author some@cool.programmer.com
 // @include http://some.host/*
 // @exclude http://some.host/path/*
 // == / UserScript ==




コード


スクリプトは、ロードされたページのコンテキストで実行され、グローバルウィンドウオブジェクトを共有します。したがって、競合を避けるために、グローバル変数を作成しないでください。 通常、匿名スコープは新しいスコープを決定するために使用され、すぐに実行されます。 内部では、「var」を使用して変数を宣言します。



 (関数(){
   var CONST = "const";
   //何かをします。
 })();




追加機能


userjsのロード期間中、Operaはいくつかの追加機能を提供します。 すべてのuserjsを読み込んだ後、それらは無効になるため、これらのハンドラーがuserjsで記述されていても、イベントハンドラーで使用することはできません。



defineMagicVariable


window.opera.defineMagicVariable(name、getter、setter)を使用すると、値の取得および設定関数を使用してグローバル変数をオーバーライドできます。 サイトのなりすましスクリプトを許可します。 セッターはオプションです( nullを指定)。



 window.opera.defineMagicVariable( 'isIE'、function(val){return true;});




defineMagicFunction


window.opera.defineMagicFunction(name、func)は、グローバル関数をオーバーライドします。



 window.opera.defineMagicFunction( 'setTitle'、function(original、_this、title){
   window.status = '設定タイトル';
   return original.apply(_this、title);
 });




addEventListener


window.opera.addEventListener(名前、ハンドラー、キャプチャー)window.addEventListenerとインターフェース互換ですが、追加のイベントをサポートします。 すべてを説明するわけではありませんが、最も重要なのは「BeforeEvent.type」と「AfterEvent.type」です。「type」の代わりに、イベントの名前を置き換える必要があります(「DOMContentLoaded」、「click」、「load」、...)



サンプルスクリプト


最も一般的なのは、ページコードを変更して広告を削除したり、リンクを追加したりするuserjsです。 この場合、ページがロードされるのを待つ必要があります。 タイプコード:



 (関数(){
   opera.addEventListener( 'BeforeEvent.DOMContentLoaded'、function(ev){
     var elem = document.getElementById( 'ad');  //広告ユニット
     elem.style.display = 'none';
   }、true);
 })();



All Articles