webForumDet fria alternativet

Highlighta sökta ord med querystring?

7 svar · 285 visningar · startad av Jesper T

Jesper TMedlem sedan nov. 20017 058 inlägg
#1

Har sätt att det går att "highlighta" ord på en websida.
Alltså; jag öppnar sidan kattmat.asp?highlight=katt , då skall överallt där det står "katt" bli blåmarkerat.
hur gör man det?

Peter SMedlem sedan dec. 20025 484 inlägg
#2

Förutsatt att du använder "highlight" som nyckelord i frågesträngen:

<script type="text/javascript">
<!--

function highlight(){
	return (function(f){
		var
			oLoad=(window.attachEvent)?"onload":"load",
			loc=location.search,
			str=(loc.indexOf("highlight")>0)?loc.split("?highlight=")[1]:null;
		f(oLoad,function(){
			document.body.innerHTML=document.body.innerHTML.replace(RegExp(str,"gi"),"<span style='color:blue'>"+str+"</span>");
		},false)
	})(window.attachEvent||window.addEventListener);
};

highlight();

//-->
</script>

:)

JojoxxMedlem sedan juni 20004 306 inlägg
#3

Det är svårt att skriva sådanna här script. highlight=foo vill man ju exempelvis inte skall ändra:

<p id="foo">

<script>
var foo="bar";
</script>

osv.

Jesper TMedlem sedan nov. 20017 058 inlägg
#4

Men jag antar att det inte går att klistra in koden på "öppnarsidan" om man vill highlighta ord på en sida som man öppnar med target="_blank".
Alltså, koden måste ligga på samma sida där orden skall markeras, eller?

Peter SMedlem sedan dec. 20025 484 inlägg
#5

<script>
var foo="bar";
</script>

Nu påverkar ju inte detta skript kod som ligger utanför <body></body>, men ok.

Alltså, koden måste ligga på samma sida där orden skall markeras, eller?

Ja, koden ovan skall ligga på den sida där orden skall markeras.

För övrigt bör det inte vara några problem att undvika att ge element sådana namn/id som man hade tänkt skulle påverkas av skriptet.

:)

Jesper TMedlem sedan nov. 20017 058 inlägg
#6

Men om jag använder detta script i en sökfunktion så måste jag ju limma in denna kod på varenda sida som skall kunna markera ut sökta ord, det verkar vara opraktiskt.
Det kanske går att lägga din kod i på en särskild sida och sedan öppna söksidan i en iframe på den sidan? eller?

Peter SMedlem sedan dec. 20025 484 inlägg
#7

Det kan du göra om du vill:

<script type="text/javascript">
<!--

function highlight(){
	return (function(f){
		var
			oLoad=(window.attachEvent)?"onload":"load",
			loc=location.search,
			str=(loc.indexOf("highlight")>0)?loc.split("?highlight=")[1]:null;
		f(oLoad,function(){
			window.frames["[b]iframe[/b]"].document.body.innerHTML=window.frames["[b]iframe[/b]"].document.body.innerHTML.replace(RegExp(str,"gi"),"<span style='color:blue'>"+str+"</span>");
		},false)
	})(window.attachEvent||window.addEventListener);
};

highlight();

//-->
</script>

Annars är ju en separat .js-fil och SSI en möjlighet.

:)

JojoxxMedlem sedan juni 20004 306 inlägg
#8

Peter S skrev:

För övrigt bör det inte vara några problem att undvika att ge element sådana namn/id som man hade tänkt skulle påverkas av skriptet.

Är det något jag lärt mig som utvecklare är det att arten användare (den felande länken enligt darwin) är fruktansvärt duktiga på att göra dumma och ologiska saker. Finns det minsta lilla möjlighet att de kan mata in någon information som kan förstöra din fina applikation, så hittar de den, garanterat. :)

Genererad på 368 ms · cache AV · v20260730165559-full.f96bc7eb