アプリ版:「スタンプのみでお礼する」機能のリリースについて

WebページまたはRSSフィードから任意の複数の文字列(※)を抽出する(または色を変えて表示する、フォントを変える、太字にする)方法はありませんか?

JavascriptによるBookmarkletで実現可能だと思ったのですが、アドバイスお待ちしています。

(※「WebページまたはRSSフィードから任意の複数の文字列」という表現が分かりにくいですが、例えばこの質問が載っているページを例にとると「カテゴリー」「ブックマーク」「回答」と言った任意の文字列を一度に抽出[または色を変えて表示する、フォントを変える、太字にする]方法を探しています。)

A 回答 (3件)

<html>


<body>
<a href="javascript:(function(){var W=['抽出','ページ','フィード'],CSS='background-color:#f0f;color:#fff;',D=document;if(D.body.createTextRange){var C=D.body.createTextRange(),BM=C.getBookmark()};for(var i=0;i<W.length;i++){if(W[i]==''){return}function MS(M){var di=D.createElement('div'),sp=D.createElement('span');if(M){ di.appendChild(sp);}sp.style.cssText = CSS;if(M){sp.innerHTML=C.text;return di}else{return sp;}}if(C){C.moveToBookmark(BM);while(C.findText(W[i],1,4)){C.pasteHTML(MS(1).innerHTML);}}else{var Z=getSelection;Z().collapse(D.body,0);if(window.find){while(find(W[i],true,false)){ if(Z()!=''){ Z().getRangeAt(0).surroundContents(MS());}}}}}})();">検索反転</a> (大文字/小文字区別版)
<br>
<a href="javascript:(function(){var W=['ie','fiREFOX','sA'],CSS='background-color:#f0f;color:#fff;',D=document;if(D.body.createTextRange){var C=D.body.createTextRange(),BM=C.getBookmark()};for(var i=0;i<W.length;i++){if(W[i]==''){return}function MS(M){var di=D.createElement('div'),sp=D.createElement('span');if(M){ di.appendChild(sp);}sp.style.cssText = CSS;if(M){sp.innerHTML=C.text;return di}else{return sp;}}if(C){C.moveToBookmark(BM);while(C.findText(W[i],1,0)){C.pasteHTML(MS(1).innerHTML);}}else{var Z=getSelection;Z().collapse(D.body,0);if(window.find){while(find(W[i],false,false)){ if(Z()!=''){ Z().getRangeAt(0).surroundContents(MS());}}}}}})();">検索反転</a> (大文字/小文字区別なし版)

<br>
<p>
>このページで具体的に言うなら「抽出」と「フィード」と「ページ」の3つの文字を一度に背景色を変更。
>このページで具体的に言うなら「抽出」と「フィード」と「ページ」の3つの文字を一度に背景色を変更。
>このページで具体的に言うなら「抽出」と「フィード」と「ページ」の3つの文字を一度に背景色を変更。
>このページで具体的に言うなら「抽出」と「フィード」と「ページ」の3つの文字を一度に背景色を変更。
</p>
文字列指定箇所、色指定箇所を先頭に持って来てありますので
エディタで開いて該当する場所を変更してください。ぱっと見ればわかると思います。
文字列はサンプル通り『必ずシングルクォーテーション』で囲む事。

1ワードの時は
W=['抽出','ページ','フィード']の部分を
W=['抽出','ページ',''] または W=['抽出','ページ'] の様にする

増やす場合は
W=['抽出','ページ','フィード','IE','Firefox'] の様に。


IE または Firefoxのみ対応と言う事で。
ページのレイアウトが崩れるケースもあるみたいです。
RSSフィードの操作についてはまた別の方法が必要なのかも?
普段扱ってないので、とりあえずRSSについてはパスです^^;


もしまだ何変更が必要な場合は ie専用でも良いか?IE,Firefox両対応か?を補足しておいてください。
ブックマークは文字数制限があるので、固定ブラウザ専用にした方がサッパリと短くできますから。

</body>
</html>
    • good
    • 0
この回答へのお礼

arexisさん、大変ありがとうございました!
おかげさまで、ネット巡回の効率が大幅にアップしそうです。

文字列指定箇所、色指定箇所も入れ替えても、タブブラウザSleipnirとSleipnirポータブル(ともにIE7エンジン)で正常に動作しました。

お礼日時:2008/03/20 16:45

<html>


<body>

<a href="javascript:(function(){ var arg = prompt('文字を入力',''), cont; if(!arg){ return; } if(document.body.createTextRange){ cont = document.body.createTextRange(); var BM= cont.getBookmark() }; function MakeSpan(mode){ var div = document.createElement('div'), span = document.createElement('span'); div.appendChild(span); span.style.cssText = 'background-color:#ff00ff; color:white;'; if(mode){ span.innerHTML = arg; return div}else{ return span; } } if(cont){ cont.moveToBookmark(BM); while(cont.findText(arg,1,4)){ cont.pasteHTML(MakeSpan(true).innerHTML); }}else{ if(window.find){ while(window.find(arg, true, false) ){ if(window.getSelection() == ''){ continue; } window.getSelection().getRangeAt(0).surroundContents(MakeSpan()); }}}})();">検索反転</a>


これをHTMLファイルとして表示させて、このリンク『検索反転』をブックマークしてください。

ざっと作った簡単なbookmarkletなので、、
RSSフィードの方の対応はしていません。
IE7とFirefox2のみ動作確認しています。
Netscapeは動きません。
Safariは調整すれば動きますが調整していません。


反転表示の色については現在は背景ピンク、文字が白です。
このスクリプト内に
background-color:#ff00ff; color:white;
と言う場所があります。

色を変える時はこのスクリプトの色部分を変更してからブックマークしなおしてください。


この説明文は、色書換えの時のサンプル用にHTML内に入れてあります。
「検索反転」をクリックすればこのページ内で確認できます。
</body>
</html>

アンカー部分は1行です。
コピーして折り返される場合は1行に戻してください。
    • good
    • 0
この回答へのお礼

わざわざjavascriptの製作までしてくださって本当にありがとうございます!

ずうずうしいお願いですが、できたらこれを複数の文字列に対しても実装する方法はないでしょうか?このページで具体的に言うなら「抽出」と「フィード」と「ページ」の3つの文字を一度に背景色を変更(同一色でかまいません。)できると大変便利で嬉しいです。

またスクリプトプロンプトによる入力ではなく、javascript内に事前に文字列を指定してjavascriptを実行するだけで、事前に指定した文字列の背景色が変化すればありがたいです。

「質問」の範疇をすでに大きく逸脱しているので、お忙しかったら無視していただいてかまいません。

回答、重ね重ねありがとうございました!

お礼日時:2008/03/19 22:46

前置き:お役に立てない確率のほうが高いです。



Bookmarkletで、、と言う事は、他人のページをと言う事ですか?

それとも自分のページの操作で、例えばサーチエンジンから来た場合に、referrer を取ってその検索キーワード箇所を強調させると言った様な動的に強調箇所を変えたいといった感じですか?
    • good
    • 0
この回答へのお礼

お返事おくれてすみません

前者の「他人のページをと言う事」のほうです

お礼日時:2008/03/17 12:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!