プロが教えるわが家の防犯対策術!

テキストエリアに単語を入力し、ボタンを押すと
その単語を含む、ローカルのhtmlファイルを検索して、
その結果を検索サイトのように表示させるような
ことをしたいと考えているのですが、
どういった方法で実現させればいいか分かりません。。。

ファイルを直接読み込まなくても、別途
ファイル毎に検索キーワードを設定して
プログラムに埋め込んで、表示させるような
やり方でもかまいません。

できれば具体的な指南を希望します。
よろしくお願いいたします m(_ _)m

A 回答 (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>
    • good
    • 1
この回答へのお礼

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

お礼日時:2008/09/21 21:34

そう言う処理は専用のエンジンを載せたツールをつかうのがベターでしょう



いろいろ公開されているテキストエディタのグレップ&タグジャンプが
最適だと思いますよ。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/09/21 21:35

プログラムに埋め込むなら。


データのセンスはないから。
コピペした後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>
    • good
    • 0

悪意を持ったスクリプトを未然に防ぐため、JavaScriptではローカル環境にアクセス出来ないようなセキュリティ対策が仕様の時点で組み込まれています。


従って、ローカルファイルを検索する、というような事はJavaScriptの仕様上実現不可能です。

IE限定で良ければ、ローカル環境へアクセスするためのActiveXを作成し、JavaScriptからそのActiveXをコールする、という方法でなら可能です。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/09/21 21:34

>ファイルを直接読み込まなくても、別途


>ファイル毎に検索キーワードを設定して
>プログラムに埋め込んで、表示させるような
>やり方でもかまいません。

こっちの方が大変です。自分で作りたいのであれば、検索したいファイルを全部読み込みキーワードが含まれているか否かを調べるほうがよっぽど簡単です。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/09/21 21:33

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