• ベストアンサー

ローカルにあるファイルを検索する方法

テキストエリアに単語を入力し、ボタンを押すと その単語を含む、ローカルのhtmlファイルを検索して、 その結果を検索サイトのように表示させるような ことをしたいと考えているのですが、 どういった方法で実現させればいいか分かりません。。。 ファイルを直接読み込まなくても、別途 ファイル毎に検索キーワードを設定して プログラムに埋め込んで、表示させるような やり方でもかまいません。 できれば具体的な指南を希望します。 よろしくお願いいたします m(_ _)m

質問者が選んだベストアンサー

  • ベストアンサー
noname#84373
noname#84373
回答No.4

自分が書いたものをながめていたら、複合検索(AND)出来そうだと考えた。 半角スペースで区切って 該当しそうなKeyを複数入力 たとえば 'g m' で、ぐ~ぐるマップとか・・・ 簡単なデータベースになれそう? <html> <body> Key Word:<input type="text" id="key" size="30" onKeyup="chk()"><hr> <div id="n"a></div> <script> var tmID; document.getElementById('key').onkeyup = function(){tmID=(clearInterval(tmID),setInterval(chk,350))}; var List=[ ['google','http://www.google.co.jp/' ], ['yahoo','http://www.yahoo.co.jp/' ], ['javascript','http://oshiete1.goo.ne.jp/qa4342528.html' ], ['javascript2','http://oshiete1.goo.ne.jp/c254.html' ], ['javascript3','http://oshiete1.goo.ne.jp/qa4342528.html' ], ['javascript4','http://oshiete1.goo.ne.jp/c254.html' ], ['guti','参考になったとかさぁ~' ], ['guti2','いったいどれぐらい勉強したらプロになれる?' ], ['googlemap','http://maps.google.co.jp/maps?hl=ja&tab=wl' ] ]; function chk(){ var ht=''; var key=document.getElementById('key').value.replace(/(\s+)/g,' ').replace(/^ | $/g,''); if(!key) {document.getElementById('n').innerHTML='';return;} var Arkey = key.split(' '); for(var i=0,mx=List.length,c=1;i<mx;i++){ for(var j=0,f=0,mx2=Arkey.length;j<mx2;j++) if(List[i][0].match(new RegExp(Arkey[j]))) f++; if(f==mx2) { var s=(List[i][1].match(/http:/))?'<a href="'+ List[i][1] +'">'+List[i][1]+'</a>':List[i][1]; ht+=c+'. ['+List[i][0]+'] / '+s+' <br>'; if(++c>10) break; } } document.getElementById('n').innerHTML=(ht=='')?'該当なし':ht; } </script> </body> </html>

denpanounabara
質問者

お礼

勉強不足でした。 丁寧な回答ありがとうございました。

その他の回答 (4)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.5

そう言う処理は専用のエンジンを載せたツールをつかうのがベターでしょう いろいろ公開されているテキストエディタのグレップ&タグジャンプが 最適だと思いますよ。

denpanounabara
質問者

お礼

勉強不足でした。 回答ありがとうございました。

noname#84373
noname#84373
回答No.3

プログラムに埋め込むなら。 データのセンスはないから。 コピペした後urlの前後の?に注意。 <html> <body> Key:<input type="text" id="key" size="10" onKeyup="chk()"><hr> <div id="n"a></div> <script> var tmID=null; document.getElementById('key').onkeyup = function(){ if(tmID) { clearInterval(tmID); tmID=null; } tmID=setInterval("chk()",350); }; var List=[ ['google','http://www.google.co.jp/' ], ['yahoo','http://www.yahoo.co.jp/' ], ['javascript','http://oshiete1.goo.ne.jp/qa4342528.html' ], ['javascript2','http://oshiete1.goo.ne.jp/c254.html' ], ['javascript3','http://oshiete1.goo.ne.jp/qa4342528.html' ], ['javascript4','http://oshiete1.goo.ne.jp/c254.html' ], ['guti','参考になったとかさぁ~' ], ['guti2','いったいどれぐらい勉強したらプロになれる?' ], ['googlemap','http://maps.google.co.jp/maps?hl=ja&tab=wl' ] ]; function chk(){ var ht=''; var key=document.getElementById('key').value; if(!key) {document.getElementById('n').innerHTML='';return;} for(var i=0,mx=List.length,c=1;i<mx;i++){ if(List[i][0].match(new RegExp(key,'i'))){ var s=(List[i][1].match(/http:/))?'<a href="'+ List[i][1] +'">'+List[i][1]+'</a>':List[i][1]; ht+=c+'. ['+List[i][0]+'] / '+s+' <br>'; if(++c>10) break; } } document.getElementById('n').innerHTML=(ht=='')?'該当なし':ht; } </script> </body> </html>

noname#140925
noname#140925
回答No.2

悪意を持ったスクリプトを未然に防ぐため、JavaScriptではローカル環境にアクセス出来ないようなセキュリティ対策が仕様の時点で組み込まれています。 従って、ローカルファイルを検索する、というような事はJavaScriptの仕様上実現不可能です。 IE限定で良ければ、ローカル環境へアクセスするためのActiveXを作成し、JavaScriptからそのActiveXをコールする、という方法でなら可能です。

denpanounabara
質問者

お礼

勉強不足でした。 回答ありがとうございました。

  • NNori
  • ベストアンサー率22% (377/1669)
回答No.1

>ファイルを直接読み込まなくても、別途 >ファイル毎に検索キーワードを設定して >プログラムに埋め込んで、表示させるような >やり方でもかまいません。 こっちの方が大変です。自分で作りたいのであれば、検索したいファイルを全部読み込みキーワードが含まれているか否かを調べるほうがよっぽど簡単です。

denpanounabara
質問者

お礼

勉強不足でした。 回答ありがとうございました。

関連するQ&A