2011/01/09

[javascript]指定の要素を消すブックマークレット

このエントリーをはてなブックマークに追加
jQueryベースで閲覧しているページから指定の要素を消すブックマークレットを書きました。

ブックマークレットとは、お気に入り(ブックマーク)に、URLではなく動作するようにjavascriptなどのコードを登録しておき、必要に応じて呼び出すものを言います。改行などが混じっていると正常に動作しませんので注意。

ブックマークレット
ブックマークレット - Wikipedia
ブックマークレットとは - はてなキーワード

あんまりないですが、技術ドキュメントとかをプリント出力するさいなんかに、余分な要素(サイドのメニューとか)を非表示にしておけます。文書構造がしっかりしているページで利用できるととても強力です。

javascript:(function(){if(typeof jQuery=='undefined'){var jq=document.createElement('script');jq.type='text/javascript';jq.onload=bookmarklet;jq.src='http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js';document.body.appendChild(jq);}$('#sidebar-wrapper').hide();})();


展開すると下のようになります。
javascript : (function ()
{
if (typeof jQuery == 'undefined')
{
var jq = document.createElement('script');
jq.type = 'text/javascript';
jq.onload = bookmarklet;
jq.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js';
document.body.appendChild(jq);
}
$('#sidebar-wrapper').hide();
})();

ほとんどjQueryの呼び出しのためのコードです。
最後の$('#sidebar-wrapper').hide();を、必要に応じた選択方法と動作に変更してあげればよいでしょう。
ベースをjQueryとしているので、こういう処理はいくらでも応用できそうです。

指定のクラス/IDを消去する
$('#sidebar-wrapper').hide();
javascript:(function(){if(typeof jQuery=='undefined'){var jq=document.createElement('script');jq.type='text/javascript';jq.onload=bookmarklet;jq.src='http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js';document.body.appendChild(jq);}$('#sidebar-wrapper').hide();})();


指定のクラス/IDに色をつける
$('.post-title .entry-title').css("background-color","lightblue");
javascript:(function(){if(typeof jQuery=='undefined'){var jq=document.createElement('script');jq.type='text/javascript';jq.onload=bookmarklet;jq.src='http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js';document.body.appendChild(jq);}$('.post-title .entry-title').css("background-color","lightblue");})();


リンク部分に色をつける
$('a').css("background-color","yellow");
javascript:(function(){if(typeof jQuery=='undefined'){var jq=document.createElement('script');jq.type='text/javascript';jq.onload=bookmarklet;jq.src='http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js';document.body.appendChild(jq);}$('a').css("background-color","yellow");})();


リンク部分を消す
$('a').contents().unwrap();
javascript:(function(){if(typeof jQuery=='undefined'){var jq=document.createElement('script');jq.type='text/javascript';jq.onload=bookmarklet;jq.src='http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js';document.body.appendChild(jq);}$('a').contents().unwrap();})();


などなど。
ダイアログを出して呼び出しの都度、手動でセレクタを指定できるようにするには下記のようにします。

ダイアログで指定要素を色づけ
var sel=window.prompt("セレクタを指定してください", "");
$(sel).css("background-color","lightgreen");
javascript:(function(){if(typeof jQuery=='undefined'){var jq=document.createElement('script');jq.type='text/javascript';jq.onload=bookmarklet;jq.src='http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js';document.body.appendChild(jq);}else{bookmarklet();}function bookmarklet(){var sel=window.prompt("セレクタを指定してください", "");$(sel).css("background-color","lightgreen");}})();

0 件のコメント :

コメントを投稿