ルビを削除するブックマークレット

HTMLにはルビ(ふりがな)を付ける仕組みがあります。
青空文庫ではこれを使っています。

えたいの知れない不吉な塊が私の心を始終おさえつけていた。
梶井基次郎「檸檬」

ルビに対応しているブラウザでは上の文がルビ付きで表示されるはずです。
次のように、ruby、rb、rpを組み合わせることでルビが付けられます。
始終<ruby><rb>圧</rb><rp>(</rp><rt>おさ</rt><rp>)</rp></ruby>えつけていた。

このルビをブックマークレットを使って削除します。

javascript:(function(){o=document.getElementsByTagName('body')[0];s=o.innerHTML;s=s.replace(/<ruby><rb>(.*?)<\/rb>.*?<\/ruby>/gi,'$1');o.innerHTML=s;})()

これを実行すると

えたいの知れない不吉な塊が私の心を始終圧えつけていた。

のように表示されます。

ChromeとIEで動作を確認しました。
Firefoxは元々ルビが表示されませんが括弧の部分は表示されるのでこの部分が削除されます。

GoogleとBingを相互に遷移するブックマークレット

最近はGoogleよりもBingの方が良いという意見を目にします。
そこでGoogle検索結果が納得できないときに、Bingで検索するためのブックマークレットを考えてみました。

Googleの検察結果のページのURLには「q=言葉」という部分があります。
実行すると、これをBingの検察結果のページのURLに当てはめて表示します。
なお逆にBingの検察結果で実行するとGoogleの検索結果が表示されます。

ブックマークレットを次に示します。

bing-google

Firefoxならばブックマークツールバーまでドラッグしてください。
Internet Explorerならば右クリックからお気に入りに保存してください。

javascript:(function(){b="http://www.bing.com/search";g="http://www.google.co.jp/search";d=document.location;if(d.href.match(b)){u=g}else{u=b}d.href=u+"?q="+d.href.replace(/.*[&\?]q=(.*?)&?/,"$1")})()

改行を施したのが次です。

javascript:(function(){
    b="http://www.bing.com/search";
    g="http://www.google.co.jp/search";
    d=document.location;
    if(d.href.match(b)){
        u=g
    }else{
        u=b
    }
    d.href=u+"?q="+d.href.replace(/.*[&\?]q=(.*?)&?/,"$1")
})()

右クリックと文字列選択を禁止する方法とそれを無効にするブックマークレット

ウェブページの文字列をコピーされないようにする方法として、右クリックを禁止する方法と文字列の選択を禁止する方法が考えられます。

右クリック禁止

右クリックを禁止するにはHTMLを次のように書きます。

<div oncontextmenu="return false;">テキスト</div>

右クリックをして表示されるメニューを「コンテキストメニュー」などと言いますが、これを無効にします。
「div」でなく「body」にこれを設定するとウェブページ全体で右クリックができなくなります。

文字列選択禁止

文字列の選択を禁止するには次のように書きます。

<div onselectstart="return false;">テキスト</div>

文字列を選択しようとしてもできません。
これも「body」に設定するとウェブページ全体で文字列選択ができなくなります。
※IE限定ですが「unselectable="on"」を使う方法もあります。

サンプルページは次の通りです。

サンプルページ

無効にするブックマークレット

これらを無効にするブックマークレットを考えてみました。

選択可能

ブックマークツールバーまでドラッグしてください。あるいは右クリックからお気に入りに保存してください。

javascript:(function(){obs=document.all;for(i=0;i<obs.length;i++){obs[i].oncontextmenu='return true;';obs[i].onselectstart='return true;';}})()

bodyだけでなく、すべてのタグについて、onselectstartとoncontextmenuに「return true;」をセットします。

なお、ここに挙げた方法がすべてではありません。これら以外にも文字列選択を禁止する方法はあります。例えば「document.onmousedown="return false;"」のようにドキュメントに対してクリックそのものを禁止したりする方法もあります。そのため、すべてのパターンに対応したブックマークレットを作るのはかなり面倒です。頻繁に利用するページならばブックマークレットを使うのは効果がありますが、そうでないならばソースを直に見てしまうのが確実です。

テキストボックスを操作するブックマークレット

テキストボックスを操作するブックマークレットのサンプルです。
これをアレンジすれば色々と使えると思います。
IE、Firefox、Chromeで動作確認しました。

削除

「t0」というIDが付いたテキストボックスを操作します。
テキストボックスのテキストから「bbb」という文字列を削除します。

javascript:(function(){a=document.getElementById('t0');a.value=a.value.replace(/bbb/g,'');})()

追加

テキストボックスのテキストに「bbb」という文字列を追加します。

javascript:(function(){a=document.getElementById('t0');a.value=a.value+'bbb';})()

和暦を西暦に変換して追加するブックマークレット

ウェブページ上にある「平成23年」という文字列を西暦に換算し「平成23年(2011年)」に置換して表示するブックマークレットを作りました。
IE6の文字制限である508文字に合わせたので、寛保元年(西暦1741年)以降に対応します。 (さらに…)

法令等の括弧部分を薄くするブックマークレット

インターネットで法令を見るときには、e-Gov(イーガブ)の法令データ提供システムがよいと思います。総務省のサイトなので信頼できるでしょう。

法令データ提供システム

法律を読むのは面倒なのですが、とりわけ面倒なのは、括弧が多くて長いため、文の構造が分かりにくいところ。
繰り返しを避けたり、正確な表現をしたりするために、必要なのは分かりますが、とにかく読みにくい。
とりあえず、とばして読もうにも、括弧の対応がよく分からない。

そこでブックマークレットを作りました。 (さらに…)

ブックマークレットで外部ファイルを使う方法

ブックマークレットの長さの制限は508文字だそうです。
複雑なものを作ると超えてしまうかもしれません。

このような場合はJavaScriptの本体を外部のファイルにする方法を使うとよいです。

javascript:(function(){var%20url='http://xxxx/bm.js';var%20d=document;var%20e=d.createElement('script');e.src=url;d.getElementsByTagName('head')[0].appendChild(e);})();

改行を入れて見やすくしたのが次です。

javascript:(function(){
var url='http://xxxx/bm.js';
var d=document;
var e=d.createElement('script');
e.src=url;
d.getElementsByTagName('head')[0].appendChild(e);
})();

まずJavaScriptのファイル(bm.js)を適当な所に置きます。
このファイルを参照するscriptタグを作り、headタグの中に置く、というようなことをやっています。
これで任意のページに対してJavaScriptが実行されることになります。
例えば「bm.js」として

alert("test");

と書くとブックマークレットの中にはそのような命令はないのに実行すると「test」というアラートが表示されます。

「ブックマークレットを配布したのだが、修正したい」というようなときも、ブックマークレットそのものは変えず、参照する外部ファイルを修正すれば済む、というような使い方もできます。

ブラウザ上の選択された文字列を取得する方法

JavaScriptを使って、ブラウザ上の選択された文字列を取得する方法を示します。
IEの場合は、documentに対して、「selection.createRange().text」を使うと取得できます。
Firefoxの場合は、documentまたはwindowに対して、「getSelection()」を使います。

次は選択された文字列をアラートで表示させる例です。

HTML

<input type="button" onclick="alert_selection()" value="表示">
<p>あいうえお</p>
<p><input type="text" value="かきくけこ"></p>
<p><textarea>さしすせそ</textarea></p>

JavaScript

function alert_selection(){
    x=document;
    y=window;
    if(x.selection){
        t=x.selection.createRange().text;
    }else if(y.getSelection){
        t=y.getSelection();
    }else if(x.getSelection){
        t=x.getSelection();
    }
    alert(t);
}

これを応用すると次のようなブックマークレットを作ることができます。
選択した文字列をGoogleで検索するブックマークレットです。最近のIEには右クリックからGoogle等で検索する機能がありますが、古いIEにはそれがありません。このブックマークレットで似たようなことができます。

選択文字列をGoogleで検索

Internet Explorerならば右クリックからお気に入りに保存してください。

javascript:(function(){x=document;y=window;if(x.selection){t=x.selection.createRange().text;}else%20if(y.getSelection){t=y.getSelection();}else%20if(x.getSelection){t=x.getSelection();};location.href='http://www.google.co.jp/search?q='+encodeURIComponent(t)+'';})();

「Twitterに投稿」用のリンクとブックマークレット

自分のウェブサイトのタイトルとURLをTwitterに投稿するための「リンク」は次のように書きます。

<a href="javascript:(function(){window.open('http://twitter.com/home/?status=' + '〈' + document.title + '〉' + document.location.href)})()">Twitterに投稿</a>

そして、この「リンク」を右クリックしてブックマークに登録するとブックマークレットになります。この場合は自分のウェブサイトでなくても使えます。

Twitterに投稿

自動入力のためのブックマークレットの作り方

ウェブサイトのテキストボックスに文字列をセットしたり、リストボックスの選択肢を選んだりすることがありますが、いつも同じページで同じ作業をするのは苦痛です。
ブックマークレットを使うと自動化することができます。
ここではブックマークレットの作り方を説明します。 (さらに…)

古い記事

タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報