- ベストアンサー
ローカルにあるファイルを検索する方法
テキストエリアに単語を入力し、ボタンを押すと その単語を含む、ローカルのhtmlファイルを検索して、 その結果を検索サイトのように表示させるような ことをしたいと考えているのですが、 どういった方法で実現させればいいか分かりません。。。 ファイルを直接読み込まなくても、別途 ファイル毎に検索キーワードを設定して プログラムに埋め込んで、表示させるような やり方でもかまいません。 できれば具体的な指南を希望します。 よろしくお願いいたします m(_ _)m
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
自分が書いたものをながめていたら、複合検索(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>
その他の回答 (4)
- yambejp
- ベストアンサー率51% (3827/7415)
そう言う処理は専用のエンジンを載せたツールをつかうのがベターでしょう いろいろ公開されているテキストエディタのグレップ&タグジャンプが 最適だと思いますよ。
お礼
勉強不足でした。 回答ありがとうございました。
プログラムに埋め込むなら。 データのセンスはないから。 コピペした後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>
悪意を持ったスクリプトを未然に防ぐため、JavaScriptではローカル環境にアクセス出来ないようなセキュリティ対策が仕様の時点で組み込まれています。 従って、ローカルファイルを検索する、というような事はJavaScriptの仕様上実現不可能です。 IE限定で良ければ、ローカル環境へアクセスするためのActiveXを作成し、JavaScriptからそのActiveXをコールする、という方法でなら可能です。
お礼
勉強不足でした。 回答ありがとうございました。
- NNori
- ベストアンサー率22% (377/1669)
>ファイルを直接読み込まなくても、別途 >ファイル毎に検索キーワードを設定して >プログラムに埋め込んで、表示させるような >やり方でもかまいません。 こっちの方が大変です。自分で作りたいのであれば、検索したいファイルを全部読み込みキーワードが含まれているか否かを調べるほうがよっぽど簡単です。
お礼
勉強不足でした。 回答ありがとうございました。
お礼
勉強不足でした。 丁寧な回答ありがとうございました。