![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67b6d)
WebページまたはHTMLソースから任意の文字列を抽出する(または色を変える太字にする)ブックマークレットを探しています
WebページまたはHTMLソースから任意の複数の文字列(※)を抽出する(または色を変えて表示する、フォントを変える、太字にする)方法はありませんか?
※任意の文字列は別ウィンドウを出し、そこに入力したものが抽出されるものがいいのですが…。
JavascriptによるBookmarkletで実現可能だと思うのですが、アドバイスお待ちしています。
(※「WebページまたはHTMLソースから任意の複数の文字列」という表現が分かりにくいですが、例えば芸能人のtwitterのIDを含んだ公式ホームページを例にとると「公式twitterのID」と言った任意の文字列を抽出[または色を変えて表示する、フォントを変える、太字にする]方法を探しています。)
下記のタイプだとHTMLソース内の検索ができなくて…。教えてください
<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>
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
#1です。
>HTMLソースの中のタグまたは文字列を検索し、該当部分を
>ブラウザ表示する方法だとどうすればいいのでしょうか?
なんだか、元の質問内容とはぜんぜん違うような…??
ソースを文字列として検索したいのであれば、documentのhtmlやbodyのinnerHTMLを取得して検索するということになりそう。
でもタグの検索はけっこう面倒そうな気がしますが…(単に、私の感想だけですが←正規表現が苦手なこともあり)
単純にdocument内の特定要素を拾い出したいだけであれば、DOMでgetElementsByTagName("○○")を利用する方がはるかに簡単かと思います。
通常の「文字列」はブラウザに表示されていますから色を変えたりすることで強調できますが、タグやその属性の文字列などは表示されていませんので、検索した後どのように表示するのかについてはひと工夫いるのではないでしょうか。
別に拾い出して、文書の最後に文字列として追加しちゃうとか…
でも、これ(↑)だと部分だけ拾い出しても文書全体のどこに当たるのかはまったくわからないですねぇ…
いっそのこと、ソース全体を文字列として表示してしまい、その中で該当箇所の色を変えて表示するとか…
しかし、このような方法だと、スクリプトでソース自体が変更されてしまいますので、#1での回答のように2回、3回と繰り返すわけにはいかなくなってしまいます。
そうすると、ソースの変更を避ける意味からも、別ウィンドウを開いて、そちらにソースを表示するようにするといった案も考えられそうですが…(ブックマークレットからの動作はちゃんと確認はしていません)
No.1
- 回答日時:
私の環境では、ご提示のコードは動作しないみたいだし(コピペミスなのかな?)、整形するのも面倒なので中身は見ていませんが…
もし、お手元のもので動作しているのなら、そのままで使えるのではないでしょうか?
そのまま登録すればよいはずです。(…って説明にも書いてありますよね?)
スクリプトの作者もそのつもりで作成なさっているのではないでしょうか?
(多分に、簡易版のつもりのようではありますが…)
>任意の複数の文字列
の意味がよくわかりませんが、
>公式ホームページを例にとると「公式twitterのID」と言った任意の文字列
というのは、任意の『単数』の文字列なので、そのままで問題ないのではないでしょうか?
複数の文字列に対して同じ処理を行ないたければ、2回行なうことで可能ではないかと想像しますが?
同じ色になってしまうのが困るとか言うのであれば又別ですが…
(色をかえたものを別に用意しておくという、単純な方法も使えると思います。)
>または色を変えて表示する、フォントを変える、太字にする
作者の説明(?)にもありますが、別の色にしたりするのと同じ要領で、太字やフォントへの変更も可能なのではないでしょうか?
(内容を見ていないので推測ですが…cssと同じ指定になっているみたいなので)
ご回答ありがとうございます。
質問の仕方が悪かったですね…。申し訳ございません。
>任意の複数の文字列
>または色を変えて表示する、フォントを変える、太字にする
はおっしゃるっとり対応できました。
HTMLソースの中のタグまたは文字列を検索し、該当部分をブラウザ表示する方法だとどうすればいいのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【JavaScript】ソースのコメン...
-
六曜カレンダー
-
変換テーブルを使った、文字列...
-
〔Excel:VBA〕マクロの実行が異...
-
csvファイルを読み込み、該当項...
-
JavaScriptで ブラウザの閉じる...
-
ASP(VBS) ←→ JavaScript の変数...
-
VBScript から JavaScript を呼...
-
列を非表示にするマクロが実行...
-
VB.NET2003 テキストボックスに...
-
一定時間ごとの実行
-
PowerPointで時計表示
-
「戻る」ボタン使用時のフォー...
-
Ajaxが動きません~『status=0』?
-
PHPとJavaとC#の違い
-
Windows Form のMSChartで、グ...
-
confirm()をはい/いいえ に切...
-
javascriptで「オブジェクトを...
-
VB.netの重複データ数カウント...
-
JavaScriptでIEのウィンドウを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
WebページまたはHTMLソースから...
-
【JavaScript】ソースのコメン...
-
WSH をC#で作ることは可能でし...
-
シェルスクリプト
-
Unityでジャンプ機能を実装した...
-
javascriptでexcel閉じる
-
変換テーブルを使った、文字列...
-
javascriptで日付を加算して表...
-
文字列圧縮_
-
リアルタイム時計をミリ秒まで...
-
六曜カレンダー
-
コメント削除/圧縮/難読化
-
Ajax.Updaterでjavascriptを記...
-
リロードしないと正常に表示さ...
-
Javascriptで特殊文字を置換す...
-
JSPの処理の途中で、JavaScript...
-
VB.NET2003 テキストボックスに...
-
gas 全角数字を半角数字に変換
-
初心者です。gulpでコンパイル...
-
if(1){...}とはどういうことで...
おすすめ情報