Är du säker på att den inte hittar länkarna?
Testa med
window.onload = externalLinks;
Alltså utan parenteser på funktionen. Och så bör det väl egentligen stå
a.target = "_blank";
?
9 svar · 500 visningar · startad av Skarre
Koden nedan är tänkt att ersätta target="_blank" på mina sidor och den har fungerat tidigare, men på den sida jag jobbar med för tillfället hittar den helt plötsligt ingenting (a_tags.length blir 0). Det spelar ingen roll vilken tagg jag testar med. Säkerligen ett pinsamt slarvfel, men jag hittar det inte i mitt nuvarande tillstånd.
function externalLinks() {
if (!document.getElementsByTagName) {
return;
}
var a_tags = document.getElementsByTagName("a");
for (var i = 0; i < a_tags.length; i++) {
var a = a_tags[i];
if (a.getAttribute("href") && a.getAttribute("rel") == "blank") {
a.target = "blank";
}
}
}
window.onload = externalLinks();
Är du säker på att den inte hittar länkarna?
Testa med
window.onload = externalLinks;
Alltså utan parenteser på funktionen. Och så bör det väl egentligen stå
a.target = "_blank";
?
Har du kollat med en alert att funktionen körs?
window.onload = externalLinks(); gör att funktionen körs innan sidan
laddas, och window.onload sätt till funktionens returvärde.
window.onload = externalLinks;
Ska det naturligtvis vara!
Jepp, jag har kollat att funktionen körs. Efter att a_tags har skapats testar jag alert(a_tags.length); och får då "0". :(
Första kodsnutten i det här inlägget ska funka.
Rent tekinskt så körs di funktion som det är nu men innan sidan har alddats, alltså finns det inga länkar på sidan då.
nitro2k01 skrev:
Rent tekinskt så körs di funktion som det är nu men innan sidan har alddats, alltså finns det inga länkar på sidan då.
Som sagt var: Det funkar om man tar bort parenteserna efter funktionsanropet.
Nu är jag där igen. Funktionen vägrar köras utan parenteser, och när jag kör den med parenteser hittas istället inga länkar.
function externalLinks() {
if (!document.getElementsByTagName) {
return;
}
var a_tags = document.getElementsByTagName("a");
for (var i = 0; i < a_tags.length; i++) {
var a = a_tags[i];
if (a.getAttribute("href") && a.getAttribute("rel") == "_blank") {
a.target = "_blank";
}
}
}
window.onload = externalLinks;
Då föreslår jag att plockar bort ett eventuellt onloadattribut från <body>, alternativt lägger till externalLinks() till nämnd tagg.
:)
Aha, man kan alltså inte ha ett onload-attribut samtidigt. Det förklarar saken. Tack för det!