KeyCloud2 ちょっとバージョンアップ

KeyCloudを少しバージョンアップしました。

  • キーワードを押したときに、ページ内検索を実施するようにしました。文字がハイライトして、最初のマッチ位置に移動します。(タグの中身まで検索してしまうので、少し表示がおかしくなることがあります。)
  • 同時にGoogleのサイト検索を行うことも可能です。
  • 文字サイズを指定最大サイズまでの切り捨てから正規化処理に変更しました。
  • キーワードの抽出を少し工夫して、英語や日本語が変に長くなるのを修正。
  • 負荷軽減のため、URL先の更新があるまで以前の結果をキャッシュします。(更新されるまでパラメータを変えても反映されないので注意してください)

<script language=”JavaScript” type=”text/javascript” src=”http://saya.s145.xrea.com/x/keyjs2.cgi?url=(解析対象HPのURL)&num=(キーワードの最大数)&encode=(文字コード)&max=(文字サイズの最大)&bgcolor=(ハイライト文字背景色)&mode=(モード)”></script>
keyjs2.cgiに変わっています。
url以外はオプション
num: 数字(default:100)
encode: eucまたはsjis(default:euc)
max: ピクセル数(default:24)
bgcolor: 16進数(default:FFFF00) #は不要
mode: googleまたはfind(default:google) googleを指定するとgoogleのサイト検索が別ウィンドウで立ち上がります。


Javascriptでのページ内検索は少し手間取りました。メインの関数は下記のような感じです。
もっと良い方法があればぜひ教えてください。

function findword(key){
if(key==”){
return;
}
if(oldhtml){
document.body.innerHTML=oldhtml; //別のキーワードでの検索による書き換えを元に戻す
}
var str='<a name=”kcfw” style=”background-color:#’+bgcolor+’;”>’+key+'</a>’;
oldhtml=document.body.innerHTML; 
var kc=document.getElementById(‘keycloud’).innerHTML; //KeyCloudの部分は検索しないように
document.getElementById(‘keycloud’).innerHTML=”; 
document.body.innerHTML=document.body.innerHTML.replace(RegExp(key,’ig’),str); //ハイライトさせます
document.getElementById(‘keycloud’).innerHTML=kc;
window.location.hash = ‘kcfw’;  //最初の検索結果に移動
}
// oldhtmlはグローバル変数

saya: