コンテンツにスキップ

英文维基 | 中文维基 | 日文维基 | 草榴社区

利用者:Kuroyan/modern.js

これはこのページの過去の版です。Kuroyan (会話 | 投稿記録) による 2009年7月13日 (月) 15:57個人設定で未設定ならUTC)時点の版であり、現在の版とは大きく異なる場合があります。

お知らせ: 保存した後、ブラウザのキャッシュをクリアしてページを再読み込みする必要があります。

多くの WindowsLinux のブラウザ

  • Ctrl を押しながら F5 を押す。

Mac における Safari

  • Shift を押しながら、更新ボタン をクリックする。

Mac における ChromeFirefox

  • 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);
');