webForumDet fria alternativet
Logga in / Bli medlem

Highlighta sökta ord med querystring?

JavaScript

7 svar · 285 visningar · startad av Jesper T

Medlem sedan nov. 20017 144 inlägg
Trådstart#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?

Medlem sedan dec. 20025 483 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>

:)

Medlem sedan juni 20004 308 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.

Medlem sedan nov. 20017 144 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?

Medlem sedan dec. 20025 483 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.

:)

Medlem sedan nov. 20017 144 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?

Medlem sedan dec. 20025 483 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.

:)

Medlem sedan juni 20004 308 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. :)

276 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
132 ms — deklarationer (db)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)