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?
Highlighta sökta ord med querystring?
7 svar · 285 visningar · startad av Jesper T
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>
:)
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.
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?
<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.
:)
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?
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.
:)
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. :)