javascript自动标记搜索结果页的关键字
发布时间:2010年05月27日点击数:
次佚名
- <html>
- <head>
- <style>
- /*定义样式*/
- .hilite1{background:#69c;}
- </style>
- <script language="javascript" type="text/javascript">
- Hilite = {
- exact: true,
- max_nodes: 1000,
- style_name: 'hilite',
- style_name_suffix: true
- };
- Hilite.hiliteElement = function (elm, query) {
- if (!query || elm.childNodes.length == 0)
- return;
- queryquery = query.split(/[\s,\+\.]+/);
- var qre = new Array();
- for (var i = 0; i < query.length; i++) {
- query[i] = query[i].toLowerCase();
- if (Hilite.exact)
- qre.push('\\b' + query[i] + '\\b');
- else
- qre.push(query[i]);
- }
- qre = new RegExp(qre.join("|"), "i");
- var stylemapper = {};
- for (var i = 0; i < query.length; i++) {
- if (Hilite.style_name_suffix)
- stylemapper[query[i]] = Hilite.style_name + (i + 1);
- else
- stylemapper[query[i]] = Hilite.style_name;
- }
- var textproc = function (node) {
- var match = qre.exec(node.data);
- if (match) {
- var val = match[0];
- var k = '';
- var nodenode2 = node.splitText(match.index);
- var node3 = node2.splitText(val.length);
- var span = node.ownerDocument.createElement('SPAN');
- node.parentNode.replaceChild(span, node2);
- span.className = stylemapper[val.toLowerCase()];
- span.appendChild(node2);
- return span;
- } else {
- return node;
- }
- };
- Hilite.walkElements(elm.childNodes[0], 1, textproc);
- };
- Hilite.walkElements = function (node, depth, textproc) {
- var skipre = /^(script|style|textarea)/i;
- var count = 0;
- while (node && depth > 0) {
- count++;
- if (count >= Hilite.max_nodes) {
- var handler = function () {
- Hilite.walkElements(node, depth, textproc);
- };
- setTimeout(handler, 50);
- return;
- }
- if (node.nodeType == 1) {
- if (!skipre.test(node.tagName) && node.childNodes.length > 0) {
- nodenode = node.childNodes[0];
- depth++;
- continue;
- }
- } else if (node.nodeType == 3) {
- node = textproc(node);
- }
- if (node.nextSibling) {
- nodenode = node.nextSibling;
- } else {
- while (depth > 0) {
- nodenode = node.parentNode;
- depth--;
- if (node.nextSibling) {
- nodenode = node.nextSibling;
- break;
- }
- }
- }
- }
- };
- Hilite.autoForSeachEngine = function () {
- var re = new RegExp('[\\?&](q|keyword|qk|wd|p)=([^&]+)','ig');
- var ref = document.referrer || 'http://search.yahoo.com/search?p=javascript&toggle=1&cop=mss&ei=UTF-8&fr=yfp-t-701';
- addLoadEvent(function () {
- var match = re.exec(ref);
- if (match) {
- var query = decodeURIComponent(match[2]);
- Hilite.hiliteElement(document.getElementById('divMain'), query);
- }
- });
- };
- function addLoadEvent(f) {
- var old = window.onload;
- if (typeof old != 'function') window.onload = f;
- else { window.onload = function () { old(); f(); }; }
- }
-
- Hilite.autoForSeachEngine();
- </script>
- </head>
- <body>
- <div id="divMain">
- 我是test,我要被highlight。我们是javascript,我们是javascript
- </div>
- </body>
- </html>