「ユーザージャバスクリプト」は造語です(ユーザースタイルシートから)。
通常、ウェブページの作者が自分のサイトに用いるJavaScriptですが、ユーザー(閲覧者)が、他者のウェブページに用いるJavaScriptをこう呼ぶことにしています。私が作ってみたユーザージャバスクリプトは、User-Javascriptと名づけました。そのままですね。
振り返ってみると、2001/8/2の日記が発想の原点らしいです。DOMは、authorの負担を軽減し、かつ、ユーザビリティを高める為にこそ存在意義があると思う
とかその辺の意識の産物らしいですが、よく覚えていません。
解凍して現われる、ujsという名前のフォルダを、Proxomitron本体と同じフォルダに置くだけです。
他、設定については、準備に記述してあります。設定しないと動きませんので注意してください。
ujsフォルダを削除するだけです……
User-Javascript(最新版)の全機能を紹介します。(お勧め順)
ウェブページに、好みのCSSルールを追加し、クッキーで記憶して次回からは自動でそのルールが適用されます。
ユーザースタイルシートでは(現実的な意味で)不可能な、tableに関する細かい設定、IDやクラスに対するスタイル指定などが可能です。参考画像
selectorにセレクタ、declarationに宣言(プロパティ:値)を記入し、executeボタンを押します。セレクタと宣言をまとめてルールといいますが、この「ルール」を(Cookieの容量が許す限り)幾つでも追加できるようになっています。
複数のリンクを新しいウィンドウで一度に開きたいときに使用します。
文字入力欄が出現し、任意の文字列を入力しますと、その文字がhref属性値のURIに含まれているリンク全てが別窓で開きます。尚、Googleでこの関数を実行した場合、自動でキャッシュのリンクだけが開いてゆきます。
また、文字列には正規表現を使うことができます。
正規表現を使った方法を説明します。例えば、そのページの中のpng画像ファイルへのリンクだけを開きたいと考えたとしましょう。このとき、\.pngと入力すれば、(弱冠例外が発生しようとも)png画像へのリンクだけが、別窓で開くことになります。バックスラッシュ(円記号に見える場合もありますが、スラッシュを逆さにした文字)は、正規表現で使う特殊な文字の前につけてエスケープするためのものです。
多くの画像を公開しているサイトでは、ファイル名などに気を使っていらっしゃる場合が多いのですが、その規則をいち早く見つけだせば、自分の好みの画像のみを開いてゆくことが楽になります。
そのサイトのクッキーを表示し、それぞれを別個に削除することができます。User-Javascriptで発行したクッキーも表示されますが、クッキー名に必ずUJS_とついているので見分けがつくことでしょう。User-Javascriptで発行したクッキーを削除するときに必要です。値を適当に書き換えることはできません。閲覧と削除のみです。
CSSを切り替えます。自作のCSSも(設定で追加していれば)選択肢に含めることができます。CHANGE CSSの参考画像
他所様のCSS切り替え用のスクリプトなどと差別化を図った点は、2つあります。
チェックボックスにチェックを入れたCSSが、全て適用されます。
UJS (user)のチェックを外すと、User-Javascriptが使いづらくなります。外さないでください。
紛らわしい名前ですが、これはそのウェブページのCSSをダウンロードしたい時に使います。以前のバージョンではインポートされたCSSは認識されませんでしたが、今回、1階層だけ認識できるようにしました。REVEAL CSSの参考画像
標準のスタイルシートになっているCSSには (default)、代替スタイルシートになっているものには (alternate)、インポートされたものには (imported)が、それぞれ表示に付加されます。style要素に記述されたCSSも表示しますが、バグがあります。しかし、あまり興味がないので放置しています(2001/10/5現在)。
link要素をJavaScriptで書き出す形でCSS切り替え機能を提供しているサイトでは、書き出されたCSSしかリストに現われません。全部ダウンロードするには、そのサイトで提供されている切り替え機能を使って(恐らくリロードするはめになります)それぞれを適用させてから毎回実行してください。
多重にインポートを使われている場合、全てのCSSを表示できません。テキストエディタで@importを探し出し、絶対URIに変換したものを直接開くしかありません。
外部JavaScriptファイルをダウンロードする際に使います。ページに埋め込まれているものはアラート表示しようとしましたが、興味がなくなったので放置しています(2001/10/5現在)。
全てのCSSを無効にします(理論上)。手持ちのIE6では、style要素のCSSも無効になっていますが、IE5.5などでは駄目だった気がします。
この機能は、製作者がCSSを理解して使っているかどうかを調べる一番手っ取り早い方法として私は個人的に良く使います。
ちなみにクッキーは発行されません。スタイルシートを切った状態を保存したい場合、CHANGE CSSを使って、Cookie以外の全てのCSSのチェックを外してください。
blockquote要素のcite属性を、ハイパーリンクにして生成するという辺境地でしか意味をなさない機能です(苦笑)。以前のバージョンから改良したのは、クッキーを発行して次回からは自動で処理する機能を追加したことです。
この関数を実行すると、文字入力欄が出現しますので、HTML要素名を記入してください。例えばh2と入力すると、h2要素のリストが表示され、クリックするとその要素の位置にジャンプします。但し、要素によってはバグが発生しますのでご注意ください。
なるべく中身にインライン要素しか含むことのできない要素(h2、h3...、address、code)等に使ってください。バグを取ろうとすると、コードが非常に長くなってしまうので放置しています。じきに修正する予定です(2001/10/5現在)。
強制改行(br要素)を取り除きます。正確には、非表示の水平線(hr要素)に置き換えます。また、もう一度実行すると元に戻ります。
あまりつかうことはありませんが、例えば、全文センタリングしているお子様サイトに遭遇したとします。このとき、まずINSERT CSS RULEにてセンタリングされているセレクタにtext-align:leftなどのCSSルールを追加して左寄せにします。次に、REMOVE BRを実行して強制改行を取り除きますと、お馬鹿な文章も立派に見えることがあります。それだけの話です。クッキーは発行しません。
まず、Proxomitron(ver Naoko4 Beta5がお勧め)を用意してください。このソフトについては、Proxomitron-Jが詳しいです。
インストールというか、Proxomitron本体と同一のフォルダ内に、ujsフォルダを置くだけです。
次にこのようなProxomitron用のWebPageフィルターを作成します。
滅多にありませんが、bodyの終了タグが無いウェブページではフィルターが利きませんので、より良い方法を思案中です。
訳がわからないというかたは、試用版を試してみてください。
簡単に変更できる設定は2つ用意してあります。
10行目の、var AuthorPriority = false;は、ページ製作者の設定したwindow.onloadを優先する時、trueとします。但し、trueとした場合、幾つかの自動的な機能が使えなくなります。
16行目からの配列には次のようにして埋め込むユーザースタイルシートの情報を記述します。
UJS_UserStyleSheets[n] = new Array('href属性値','title属性値','rel属性値');
全て必須です。nは0から始まる添え字です。hrefにCSSファイルの絶対URIを、titleにCSSの名称を半角英数字で、relにはstylesheetまたはalternate stylesheetを記述します。
href属性値には、ユーザースタイルシートの絶対URIを記述しますが、ujsフォルダに入れた場合、ファイル名(例:myStyle.css)だけでOKです。
ページ内(表示領域)の適当な場所でAltキーを押しながら左クリックしますと、その位置にセレクトボックスが出現しますので、その中の任意の関数を選択すればそれが実行されます。少なくとも現在の仕様では、このように呼び出します。
Shift + 左クリックで、セレクトボックスを非表示にすることが出来ます。単に位置を移動させたいだけなら、その場所でAlt + 左クリックすれば済むことなので、あまり必要ないかもしれません。
自作のJavascript関数を追加するのが容易になりました。
まず、var UserJavaScirpt = new function(){という記述の行を探してください。
UserJavaScriptは実体を持ったオブジェクトです。このメンバーとして追加します。次のような形式で追加してください。
var UserJavaScript = new function(){
this.???? = new function(){
this.Title = '機能の名前';
this.EXE = function(){ // 関数
//ここに実行文を記述します
}
}
}
thisは生成したオブジェクト自身を指していますので、UserJavaScirptと書いても問題ありません。????には適当なメンバー名を入れます(どこにも影響しないので適当でOKです)。_(アンダースコア)と半角の英字(a-z)から始まり、半角英数字(0-9,a-z)とアンダースコアが使えます。thisは、UserJavaScript.????を指していますので、UserJavaScript.????に置き換えても問題ありません。Titleには関数の名称を、EXEに関数を記述します。EXEは実体を生成しないでください。関数ではなく実行文になってしまいます。狙ってやる分には良いのですが。Title、EXE以外なら、幾らでもメンバーを追加できますので、なるべく広域変数は書かないでください。競合の原因になります。
例によってモジュールとして使えそうな関数は最後の方に列挙してありますので参考にしてください。改造を歓迎します。
UserJavaScirpt直下のメンバーを削除してください。ただし、Autoという名前のメンバーを含む場合、削除するとエラーになりますので注意してください。これを削除するためには、下の方にある「[onLoad]ページ読み込み後にUserJavascript発行のクッキーで処理する関数」の該当する箇所も削除する必要があります。というか私にもどうなるか断言できないので、止めて置いてください(おい)。
例外なく自由に追加、削除するには、取りあえずUJS_Auto()関数を以下のものに差し替えてください(2001/12/26追記)。
function UJS_Auto(){
for(var member in UserJavaScript){
if(UserJavaScript[member].Auto){
UserJavaScript[member].Auto();
}
}
UJS_StyleSheets.Auto();
}
拡張したい方は、以下をUserJavaScriptオブジェクトのメンバを加えてください。でも自作推奨。
User-Javascriptの設定が面倒だという方、ユーザースタイルシートを持っていない方、ローカルでサーバソフトを動かしていない方は、このオンライン試用版フィルターをお試しください。但し、いつ使えなくなっても一切責任を負えません。(消滅予定のWWWサーバを利用します)
UJS_online.cfg
サーバ消滅につき、試用版の公開を終了しました。(2001/12/5)
動けばいいというのは好きではないですし、JavaScriptのスキルも向上させたいので、お手数ですが、お気づきの点が御座いましたら、(宗教的でも構いません)是非教えてください。よろしくお願いします。実は、これが目的で公開させていただいております。
というわけで、どのようにお使いくださっても構いません。
他、能動的なウェブブラウジングの追及を目的としています。製作者が意図する利用の仕方を押し付けようとするウェブページに、使いづらい、見づらいと文句を言わず、自分で適当に直してやるわけです。