利用者:Kuroyan/modern.js
表示
お知らせ: 保存した後、ブラウザのキャッシュをクリアしてページを再読み込みする必要があります。
多くの Windows や Linux のブラウザ
- Ctrl を押しながら F5 を押す。
Mac における Safari
Mac における Chrome や Firefox
- ⌘ Cmd と ⇧ Shift を押しながら R を押す。
詳細についてはWikipedia:キャッシュを消すをご覧ください。
/*-------------------------------------------------------------------------------------
WikipediaやGoogleの検索ページから来たとき、そのキーワードをハイライトしてみるテスト
by kuroyan 2009
-------------------------------------------------------------------------------------*/
// サイトごとに分けて処理
function userHighlight() {
/* Wikipedia:検索 */
if(document.referrer.match(/search=([-_.!~*\'()a-zA-Z0-9;\/?:\@=+\$,%#]+)&?/))
userHighlightMain(decodeURIComponent(RegExp.$1));
/* Google検索 */
if(document.referrer.match(/search.*(\?|&)q=([-_.!~*\'()a-zA-Z0-9;\/?:\@=+\$,%#]+)&?/))
userHighlightMain(decodeURIComponent(RegExp.$2));
}
// 指定された keyWord をハイライト
function userHighlightMain(keyWord){
var targetObj = document.getElementById("mw_content"); //hardcode
/*
var textNodes = searchTextNode(targetObj);
//alert(keyWord + "," + textNodes.length);
for(var i=0; i<textNodes.length; i++)
// textNodes[i].parentNode.innerHTML =
// textNodes[i].parentNode.innerHTML.replace(new RegExp("(" + keyWord + ")" ,"g"),
// "" );
*/
targetObj.innerHTML = powerfulHighlight(targetObj.innerHTML, keyWord);
}
// ttp://java.cocolog-nifty.com/blog/2005/12/javascripthtml_03d5.html より引用
var phLT = "<span class='userHighlight'>";
var phGT = "</span>"
function powerfulHighlight(text,keyword){
replaced_text = text.replace( new RegExp( '(' + keyword + ')', "ig"), phLT + "$1" + phGT );
while( replaced_text.match( new RegExp( '(<[^>]+)(' + phLT + keyword + phGT + ')(.*?>)', "ig") ) ) {
replaced_text = replaced_text.replace( new RegExp( '(<[^>]+)' + phLT +'(' + keyword + ')' + phGT +'(.*?>)', "ig"), "$1$2$3" );
}
return replaced_text;
}
/*** 首になりました。
// target エレメント以下の テキストノードを検索してその配列を返す
function searchTextNode(target){
var tnAry = [];
for(var i=0; i<target.childNodes.length; i++) {
switch(target.childNodes[i].nodeType){
case 1:
tnAry = tnAry.concat(searchTextNode(target.childNodes[i])); break;
case 3:
tnAry.push(target.childNodes[i]); break;
}
}
return tnAry
}
*/
// 読み込み完了時に発動
window.addEventListener("load", userHighlight, false);