■ブックマークレット
・Code Prettify Bookmarklet for Blogger
※ブックマークレットの追加は上記リンクを右クリック→追加、かブックマークツールバー欄にドラック&ドロップで。
ソースの中身
javascript:
function getSelectedTextAndReplace() {
IE='\v'=='v';
var SelectedText;
if(IE) {
var objSelectedText = document.selection;
var objTextRange = objSelectedText.createRange();
if (document.selection.createRange().text.length == 0) {
return;
}
try {
SelectedText = objTextRange.text;
objTextRange.text = strToBloggerCodeTag(SelectedText);
} catch (e){
}
} else {
SelectedText = window.getSelection().toString();
var obj = document.getElementById("postingHtmlBox");
var ns = obj.selectionStart;
var ne = obj.selectionEnd;
var nl;
if ( ns != ne ) {
var txt = strToBloggerCodeTag(SelectedText);
txt = obj.value.substring(0, ns) + txt + obj.value.substring(ne,obj.value.length);
obj.value = txt;
obj.setSelectionRange(ns,ns+nl);
}
}
}
function strToBloggerCodeTag(str) {
return "<pre class=\"prettyprint\">\n" + escapeHTML(str) + "\n</pre>";
}
function escapeHTML(strTarget){
var div = document.createElement('div');
var text = document.createTextNode('');
div.appendChild(text);
text.data = strTarget;
return div.innerHTML;
}
getSelectedTextAndReplace();
void(0);
たぶんfirefoxとchromeでしか使わないけど、IEでも一応動いた。
名前とかいまいちだしコードツギハギだけど、とりあえず自分用なのでOK!
またリファクタリングしたい。
あとblogger編集画面textareaのidであるpostingHtmlBoxの中身をみてるので、
id名が変わったら書き換えが必要になりそう。
参考
・bookmarkletで選択文字列を取得することを考える - 徒書
・JS : テキストエリア内の選択文字列の置き換え :logical error
