J
Jane D
I have got a bookmarklet for use with Opera which highlights all
occurrences of some text in the displayed page. I find it very
useful.
Sometimes I need to use two or three different colours for different
keywords I want highlighting on the same page. I have done this by
changing the original word 'yellow' for other javascript colour
words.
I know next to nothig about javascript. So I would ask if anyone
knows how I can tweak this javascript bookmarklet code (see below) in
two sepearte ways:
(1) So that I can select a color from a list. This may be as simple
as changing the caption to say "enter 1 for lime, 2 for yellow," etc.
or it might be cleverer.
(2) This is mutually exclusive with (1). In this case the
javascript would prompt me to enter a javascript colour keyword (like
"yellow" or colour code like "FF00FF").
Of course, in each case the javascript needs to ask me what i am
searching for!
The javascript is below. Is anyone able to advise on this?
TIA.
Jane
--------------
javascript
function(){var count=0, text, dv;text=prompt("Search
phrase (yellow):", "");if(text==null ||
text.length==0)return;dv=document.defaultView;function
searchWithinNode(node, te, len){var pos, skip, spannode, middlebit,
endbit, middleclone;skip=0;if( node.nodeType==3
){pos=node.data.toUpperCase().indexOf(te);if(pos>=0){spannode=documen
t.createElement("SPAN");spannode.style.backgroundColor="yellow";middl
ebit=node.splitText(pos);endbit=middlebit.splitText(len);middleclone=
middlebit.cloneNode(true);spannode.appendChild(middleclone);middlebit
..parentNode.replaceChild(spannode,middlebit);++count;skip=1;}}else
if( node.nodeType==1&& node.childNodes &&
node.tagName.toUpperCase()!="SCRIPT" &&
node.tagName.toUpperCase!="STYLE"){for (var child=0; child <
node.childNodes.length;
++child){child=child+searchWithinNode(node.childNodes[child], te,
len);}}return skip;}window.status="Searching for
'"+text+"'...";searchWithinNode(document.body, text.toUpperCase(),
text.length);window.status="Found "+count+"
occurrence"+(count==1?"":"s")+" of '"+text+"'.";})();
occurrences of some text in the displayed page. I find it very
useful.
Sometimes I need to use two or three different colours for different
keywords I want highlighting on the same page. I have done this by
changing the original word 'yellow' for other javascript colour
words.
I know next to nothig about javascript. So I would ask if anyone
knows how I can tweak this javascript bookmarklet code (see below) in
two sepearte ways:
(1) So that I can select a color from a list. This may be as simple
as changing the caption to say "enter 1 for lime, 2 for yellow," etc.
or it might be cleverer.
(2) This is mutually exclusive with (1). In this case the
javascript would prompt me to enter a javascript colour keyword (like
"yellow" or colour code like "FF00FF").
Of course, in each case the javascript needs to ask me what i am
searching for!
The javascript is below. Is anyone able to advise on this?
TIA.
Jane
--------------
javascript
phrase (yellow):", "");if(text==null ||
text.length==0)return;dv=document.defaultView;function
searchWithinNode(node, te, len){var pos, skip, spannode, middlebit,
endbit, middleclone;skip=0;if( node.nodeType==3
){pos=node.data.toUpperCase().indexOf(te);if(pos>=0){spannode=documen
t.createElement("SPAN");spannode.style.backgroundColor="yellow";middl
ebit=node.splitText(pos);endbit=middlebit.splitText(len);middleclone=
middlebit.cloneNode(true);spannode.appendChild(middleclone);middlebit
..parentNode.replaceChild(spannode,middlebit);++count;skip=1;}}else
if( node.nodeType==1&& node.childNodes &&
node.tagName.toUpperCase()!="SCRIPT" &&
node.tagName.toUpperCase!="STYLE"){for (var child=0; child <
node.childNodes.length;
++child){child=child+searchWithinNode(node.childNodes[child], te,
len);}}return skip;}window.status="Searching for
'"+text+"'...";searchWithinNode(document.body, text.toUpperCase(),
text.length);window.status="Found "+count+"
occurrence"+(count==1?"":"s")+" of '"+text+"'.";})();