March 18, 2004

google_highlight by JavaScript

blosxom の google_highlight プラグインでは、Referer: が google 検索だった場合に、q= の部分をとりだして、検索語をハイライトするということをやっています。

これの javascript 版があればベンリかなとおもい quick Hack。

function highlightKeyword() {
  var html = document.body.innerHTML;
  if (document.referer == undefined) return;
  var keywords = extractQueries(document.referer);
  if (keywords.length > 0) {
    for (i in keywords) {
      var kw  = keywords[i];
      var mod = i % 3; // modular by 3
      var pat = new RegExp(kw);
      html = html.replace(pat, "<span class=\"highlight" + mod + "\">" + kw + "</span>");
    }
    document.body.innerHTML = html;
  }
}
function extractQueries(referer) {
  var queries = new Array();
  referer.match(/q=([^&]+)/);
  if (RegExp.$1) {
    var match = RegExp.$1;
    var qs = match.split("+");
    for (i in qs) {
      queries.push(unescape(qs[i]));
    }
  }
  return queries;
}
document.write("<style>
.highlight0 { background: #ff0; }
.highlight1 { background: #0ff; }
.highlight2 { background: #f0f; }
</style>
");

こんな感じですな。document.body.innerHTML を String.replace で置換しています。マルチバイトはうまくうごきませんねえ。。

Posted by miyagawa at March 18, 2004 11:49 PM | Permalink | Comments (1) | TrackBack(1)
Comments

これ便利ですね。使わせて頂きます。

Posted by: とくひろ on March 25, 2005 06:32 PM
Trackbacks
TrackBack URL for this entry: http://blog.bulknews.net/mt3/mt-tb.cgi/848
[tDiary] google_highlight.rb google_highlight by
Excerpt: [tDiary] google_highlight.rb google_highlight by JavaScript,そしてその元ネタであるblosxonのgoogle_highlight pluginに触発されてtDiaryのgoogle_highlightプラグインを作ってみた. # google_highlight.rb $Revision: $ # # Copyright (c) 2004 Junichiro KITA ...
Weblog: 今日のなんでやねん
Tracked: March 20, 2004 11:54 AM
Post a comment