2012‎ > ‎

webaborn

http://webaborn.herokuapp.com/ の補足ドキュメントです。


Google ChromeでUser JavaScriptを使う

2016-04-12
Tampermonkey ver4以降はスクリプトに  @include または @match が必須になりました。登録するスクリプトは、以下のように @include を含むようにします。
// ==UserScript==
// @name         import_webaborn
// @namespace    http://webaborn.herokuapp.com
// @version      0.1
// @description  import local WebAborn.js
// @author       foo
// @require      file:///C:/WinApp/UserJavaScript/WebAborn.user.js
// @grant        none
// @include      *
// ==/UserScript==
ちなみに file:///C:/WinApp/UserJavaScript/WebAborn.user.js の文字列は、Webブラウザに何かuser.js以外のファイル(画像ファイル等)をドラッグドロップして、そのときのURL欄を参考に作ります。


2014-08-10
Google Chrome ver34以降は、WebAbornをインストールしてもGoogleChrome再起動時に無効にされるようになりました(Windows版Chromeのみ。Mac, Linuxでは問題なし)。対応策は、Google公式には「Dev版Chromeをインストール」となっていますが、通常のGoogle Chromeに拡張機能Tampermonkeyをインストールするのが簡単です。
→ 追記 2014-10-16 使用方法を書きました。

Tampermonkeyの設定

GoogleChromeの[〓 > その他のツール > 拡張機能]を開く。
Tampermonkeyの ファイルの URL へのアクセスを許可する をチェック。


[オプション]をクリック。
[新規ファイル]アイコンをクリックして、以下のように入力して[保存]。

WebAborn.user.jsを置く場所はどこでもよいが、配置したフォルダーを@requireで指定しておく。 ここではC:\WinApp\UserJavaScriptに配置した。

「インストール済みJavaScript」は次のようになる。

これでWebAbornが機能するようになる。

今後は、WebAborn.user.jsを新しく更新したい場合、C:\WinApp\UserJavaScript\WebAborn.user.jsを新しいファイルに置き換えるだけでいい。
従来のGoogleChromeの場合は、WebAborn.user.jsを新しく置き換えたあとでWebブラウザーを再起動する必要があった。 しかしTampermonkeyの場合は、WebAborn.user.jsを置き換えたあとページをリロードするだけで反映される。Webブラウザーを再起動する必要はない。

しかし、Tampermonkeyはときどき動作しないことがある。Tampermonkey自体がアップデートしたとき、またはGoogleChromeを長時間起動しているときに起こるように思える。Webブラウザーを再起動すれば動作するようになるが、Firefoxに比べて信頼性は低くなった。勝手にアップデートするのを停止する方法もないようだ。


2013-05-27
Google Chrome ver27では UserScriptがiframe内部で動作しない という問題がありました。 → 追記 2013-07-11  GoogleChrome ver28で修正されました。


2013-03-05
GoogleChrome ver22から、user.jsファイルをドラッグ&ドロップしてインストールできるのは「ツールアイコン - ツール(L) - 拡張機能(E)」の画面だけになりました。
GoogleChrome25 & Windows7



2012-06-16
Google ChromeをWindowsで使う場合、ファイル「WebAborn.user.js」をGoogle Chromeのウィンドウにドラッグ&ドロップすればインストールできます。
(※ WebAbornをGoogle Chrome15にインストールする方法 も参考にしてください)


これでインストールは終了です。GoogleChromeの再起動は必要ありません。
今後読み込むWebページではNGワードが「あぼ~ん」という文字列に置き換わるため、見なくてもすみます。


使用を一時的に停止する場合は[ツール/拡張機能]でWebAbornの行の[有効]のチェックを外します。
完全に削除するにはその画面で[削除]をクリック。



Linuxで Chromiumブラウザ(Google Chromeと同じ)を使う場合は、
たとえば /home/foo/js に WebAborn.user.js ファイルを置き、ブラウザのURL欄に /home/foo/js と入力して、


表示された user.jsファイルをクリックすると、インストールできました。






FirefoxでUser JavaScript(Greasemonkeyスクリプト)を使う

2012-06-20 更新

Firefoxは、User JavaScriptを動かす機能を内蔵していません。そこで、拡張機能が必要になります。

拡張機能 Scriptish(Greasemonkeyの改良版)を先にインストールして、その後で以下を実行します。
(追記2012-06-20: WebAbornバージョン13をリリース - itouhiroメモ によると、2012年6月現在、Greasemonkey(グリースモンキー)は不具合でuser.jsスクリプトをインストールできません。Greasemonkeyをインストールせず代わりにScriptishをインストールします)


WebAborn.user.jsファイルを Firefoxにドラッグ&ドロップしましょう (Firefoxに表示されているページは何であってもかまいません)。


[インストール] をクリックしてください。

これで今後読み込むWebページは、NGワードが「あぼ~ん」という文字列に置き換わるため、見なくてもすみます。

WebAbornを一時的に無効にするには、[ツール/Greasemonkey/ユーザスクリプトの管理]でWebAbornを選択して[有効にする]のチェックを外します。
完全に削除するにはその画面で[アンインストール]をクリックしてください。



LinuxでFirefoxの場合、まず拡張機能Greasemonkeyを入れてから、
たとえば /home/foo/js に WebAborn.user.js ファイルを置き、ブラウザのURL欄に /home/foo/js と入力して、表示された user.jsファイルをクリックすると、インストールできました。






OperaでUser JavaScriptを使う

2013-07-11
Ver 15以降のOperaはGoogleChromeの派生版なので、GoogleChrome向けと同じ方法で使えます。上の「Google ChromeでUser JavaScriptを使う」を参考にしてください。


2012-12-26
OperaのVer 12までの場合、[ツール - 設定 - 詳細設定 - JavaScriptオプション] をクリックして、「ユーザーJavaScriptファイル」のところにフォルダ (たとえば 'C:\scripts') を指定します。


そのフォルダに、さっき作った WebAbornファイルを置きます。(Operaの再起動は必要ありません)

これで今後読み込むWebページではNGワードが「あぼ~ん」という文字列に置き換わるため、見なくてもすみます。

WebAbornを一時的に無効、または削除するには、WebAborn_opera.user.jsファイルを指定フォルダから別の場所に移動します。


Androidスマートフォンの Opera Mobile Classic (Opera Miniではありません)では
を参考にするとWebAbornを使えます。 (追記: 2013-07-11  Ver12.1で、WebAbornタイプ2 Opera向けが使用できることを確認しました。)

Operaは User Javascriptの動作にあやしいところがあります。WebAbornで指定した文字が効果ないことがOperaではたまに起こります。
その一方で、OperaにはFirefoxやChromeにない利点も持ちます。WebAbornバージョン14をリリース - itouhiroはてなブログにあるとおり、Web上ではない ローカルのファイルに対してもWebAbornを効かせることができるのです。






注意点 caution


  • NGワードを新たに追加したい場合、WebAbornファイルを作り直して、上記のインストール作業を再度実行します。
    このとき、すでにインストール済みの WebAbornをアンインストールしなくてもよいです。

    WebAbornを再インストールすると、以前に設定した NGワードは消えてしまいます。 以前のNGワードも残したいなら、NGワード入力するとき、まえに登録した語句も再登録してください

  • WebAbornファイルからNGワードを取り戻す方法は現在準備されていないので、変換前のNGワードをテキストファイルに記録しておくことをおススメします。

  • WebAbornファイルをダウンロードしたとき、WebAborn.user[2].jsのようなファイル名になってしまうとインストールできません。ブラウザ側で認識するために「.user.js」の部分が必要だからです。その場合ファイル名を手動で WebAborn.user.js に変更してください。

  • WebAbornは、「HTMLのタグからタグまで」の文字列 (正確に言うと DOMのノード) をまとめて置き換えます。例を挙げると、<p>さっぱりと甘く、<br>しっとりもちもちのおまんじゅうに仕上げました。</p>というような HTMLだったとすると、<p>さっぱりと甘く、<br>あぼ~ん</p>というふうに置換されます。

  • 上の例を別の言い方で言うと、NG文字列の途中に HTMLタグ がはさまれていた場合、あぼ~んされません。 例を挙げると、HTMLが<p>さっぱり<b>ま</b>んじゅうですよ。</p>だった場合、「まんじゅう」の言葉がHTMLタグで分断されてしまっているので、 置換されず、そのまま表示されてしまいます。

  • ただし「単語単位置き換え」のUserJavaScriptを選択すると、NGワードのみを置き換えます。しかし「単語単位置き換え」は動作が比較的遅いので、NGワードが多い(500語とか)なら「単語単位置き換え」はお勧めしません。

  • 正規表現やワイルドカードは使えません。英字の大文字、小文字は区別されます。(例:「manju」を登録しても「Manju」には効果がない。効かせるためには、2単語を別々に登録するか、2単語の共通部分「anju」を登録すればよい)

  • NGワードに使える文字は制限なしです。ただし、単語の「前」や「後」についた半角/全角空白は削除してから登録されます。単語の「中」にある半角/全角空白は削除されません(例:「 ま んじゅう 」は「ま んじゅう」になる)。入力文字列のなかに空白だけとか改行だけの行があった場合、その行は登録されません。

  • NGワードが重複している場合、自動的に最適化されます。(例:「まんじゅう」「まんじゅ」「まんじゅー」「まんじゅ」「まんじゅしゃけなべいびーにんともかんとも」と入力した場合、「まんじゅ」だけあれば他のNGワードはなくても同じ結果になるので、「まんじゅ」だけ登録される。同じ単語「まんじゅ」が2つあるが、複数あっても1つだけ登録される)
    しかし
    「単語単位置き換え」の場合は、まったく同じ単語以外は最適化しません。最適化すると「まんじゅしゃけなべいびーにんともかんとも」が「××××しゃけなべいびーにんともかんとも」 のように表示されてしまい、ほとんど消えてないのでよくないからです

  • HTMLの URL の部分はあぼ~んできません。1行入力欄(input type="text"タグ)と複数行入力欄(textareaタグ)は、入力中の文字が消えてはまずいので、あぼ~んしません。それらは下記の画像のように、そのまま表示されてしまいます。
    GoogleChrome検索ボックス

    titleタグは一般のページであればあぼ~んできます。google.comやtwitter.comなど画面表示後にtitle書き換えるWebページではできないこともあります。

    画像(JPG, PNGなど)の中や、Flashの中(ニコニコ動画のコメントなど)に表示される文字列もあぼ~んできません。

  • Firefoxでは標準で、HTMLページの読み込み途中でも、読み込んだぶんだけの内容をどんどん表示するようになっています。しかし、WebAbornはページを「すべて」読み込んだ後になってはじめて動作するので、ページ読み込み途中の画面では 読みたくない文字列をまともに見てしまうことになります。

    それを避けるために、プロファイルフォルダ (WindowsXPの場合は 'C:\Documents and Settings\ユーザ名\Application Data\Mozilla\Firefox\Profiles\文字列.default' ) にある user.js ファイル (なければテキストエディタで新規作成する) に以下の内容を追記します。user_pref("nglayout.initialpaint.delay", 120000);この数値 120000 の単位はミリ秒です。ここでは 120秒を指定したことになります。
    すると、HTMLページを完全に読み込んでいないときは 120秒立つまではページ内容を何も表示しなくなります。(ページの読み込みが完全に終われば、120秒を待たず、すぐ表示されます)。
    参照: チューニング - Mozilla Firefox まとめサイト 

    OperaとGoogleChromeでも、ページ読み込み途中の画面では 読みたくない文字列をまともに見てしまうのですが、これを避ける方法は この2つのブラウザにはないようです。ページが読みこみ終わるまで、読むのを待ちましょう。

  • Ver 6 以降でJavaScriptで文字を読み込むページに対応しました。そういったページでは、WebAbornを使うと動作が遅くなることがあります。

    • JavaScriptで細かな部品を大量にページに貼る――具体的には Googleドキュメントのようなサイト
    • CPUが非力
    • NGワードが多い(500語とか)

    の条件が重なると、遅くなるかもしれません。
    回避策として、WebAbornの「ユーザースクリプトを実行しないページ」にそのサイトを追加すれば、そのサイトだけWebAbornを動作させず、遅くならないようにできます。
    たとえば Googleスプレッドシートのページが遅い場合、 user.jsファイルをテキストエディタで開いて、// @exclude https://spreadsheets.google.com/*と1行追加すればよいです。


 「あぼ~ん」とは

  • 「あぼーん」という言葉の意味は 「あぼーん」を Google検索

  • 2ちゃんねるで使われるオリジナルは「あぼん」で、2ちゃんねるブラウザでは「あぼん」という表記を使っているそうです。
    参考: 透明あぼーん とは(はてなキーワード)
    このスクリプトはサーバ側のデータは書き換えず、Webブラウザで表示するときに文字置換してるだけなので、後者にしてあります。

  • 「あぼ~ん」の英語表記について調べると、2ちゃんねる関連ソフトウェアでは abone と aborn の2種類があります。 2ちゃんねる自身が「#aborn機能」を実装したことがあったらしいので、このソフトでは aborn のつづりに しておきました。






更新履歴 Revision History



Date Version Description
2013-10-15 19 Able to replace '<a href=".."' strings (for Firefox/GoogleChrome).
Stop excessive optimization in NGword-only-replace.

AタグのURLを置き換え対象に追加(タイプ1のみ)。単語単位置き換えのとき最適化を抑制。関連記事
2013-06-17 18 Able to replace NG word only.
Speed up with tweaking JavaScript.

単語単位で置き換え可能になりました。動作速度が少しアップ。
2013-05-20 - レビュー記事 誠 Biz.ID:3分LifeHacking:Webページ上で特定の単語を見えなくする「WebAborn(ウェブあぼ~ん)」を活用する が掲載されました。
2013-03-05 17 Remove 'webaborn.herokuapp.com' from @exclude.

webaborn.herokuapp.com を適用除外サイトから外しました。
2013-01-11 16 Add Desktop version for Windows
Define License as MIT
Release source codes to public with github.com

デスクトップ版WebAbornを追加。オープンソース化してgithubで公開。 https://github.com/itouhiro/webaborn
2012-07-27 15 Fix a bug about removing redundancy of NG words.

PHPのunique()にあたる機能をJavaScriptに搭載し忘れていて、重複したNGワードを省く処理にあった不具合を修正しました。
2012-07-20 14.1 Change filename as 'WebAborn_opera.user.js'. Attach CSS style 'white-space: pre-wrap' to '<pre>' tag in *.txt file.

タイプ2のファイル名をWebAborn_opera.user.jsに変更。
14 Replace newline with '<br>' tag in *.txt file. Inhibit replacing in <script>..</script>.

テキストファイルは各行ごとに判定するよう変更。scriptタグをNG対象から外しました。関連記事
2012-06-17 13.1 Fix Opera Support.

Operaサポートのため「タイプ2」を作成しました。
13 Inhibit replacing in <input type="text"/> and <textarea></textarea> because of avoiding accidental deleting of your input texts.
Fix bug about the characters U+0027, U+002C.
Escape Alphabet in NG words.
Change a server script from PHP 5 to Node.js 0.6.
Move the web site and change @namespace.

公開Webサイトを変更しました。1行入力欄(input type="text"タグ)と複数行入力欄(textareaタグ)をNG対象から外しました。関連記事
2012-04-20 12 No change in features. Change a server script only. The option sort_flag in array_unique() is deleted for PHP 5.2.5. Remove links to older versions in HTML.

機能変更はありません。サーバ変更に伴い内部スクリプトを少し変更。
2011-10-12 11 Remove redundance in NG words. Stopped support for <area alt, <object standby attributes.

重複したNGワードを省きます。
2011-07-01 10 Inhibit replacing in <style>.. </style>.

HTMLに埋め込まれたCSS文字列を壊さないようにしました。関連記事
2011-02-09 9 Added support for <img alt<area alt<object standby<* title atributes.
Added document for Linux.

alt属性とtitle属性にも対応しました。
2011-01-08 8 Works same as version 7.
Matches strings with Xpath. Thanks to http://d.hatena.ne.jp/amachang/20100123/1264261110

WebAbornを紹介するブログ記事でVersion8を説明しました。
2011-01-07 7 Added support all characters to use in NG words.
Able to purge values of <input> tags.
Added support for the XHTML files in the top with <?xml version=1.0 encoding=UTF-8?>.
Speed up with not using RegExp.
Removed an @exclude.

NGワードに入れる文字に半角記号も使えるようになりました。Webページのタイトルやinputboxもあぼ~んできます。正規表現を使用するのをやめて、バージョン6よりスピードアップしました。
2010-12-29 6 Added support for Ajax or JavaScript pages.
Able to change the replaced word.
Able to purge the title of web pages.
Able to use some sign characters in the NG words.
Stopped AutoPagerize support.
Change a server script from Ruby 1.8 to PHP 5.

JavaScriptで文字を読み込むページに対応しました。Gmail, twitter.com, Googleリーダー, そのほかいろいろでWebAbornが有効になります。置換後の文字を指定できるようになりました。Firefox向けAutoPagerizeの特別対応は必要なくなったので停止しました。
2010-11-18 - Updated document for GoogleChrome 4 or later.
2009-11-07 - Updated AutoPagerize version to 0.0.41
2009-08-19 5 Modified document for GoogleChrome2.
Added @exclude.
2009-04-10 - Added support for AutoPagerize (version 0.0.36).
2009-04-08 4 Fixed a bug that some NG words will not be replaced.

JavaScriptの正規表現でgオプションを使っていたため、NGワードが消えないことがあったのを修正しました。
2008-12-27 - Added document for GoogleChrome.
2008-05-08 3 Fixed a bug that newline only line in input text makes all word erasing.
change @namespace.

NGワード入力欄に、改行のみの行があった場合、NGワードとしては登録しないようにしました。
2007-11-21 2 Fixed typo come from 'linkify'.
change @namespace.
2007-07-20 1 First release.
This source code refered the greasemonkey script 'linkify' and hatena:sawat 's UnicodeEscape JavaScript. Thanks.



Comments