webForumDet fria alternativet

javascript för att öppna länk i nytt fönster

JavaScript

3 svar · 1 043 visningar · startad av jasifil

Medlem sedan okt. 200932 inlägg
Frågan#1

Jag hittade ett javascript på nätet som jag använder på vissa av länkarna på min hemsida. Eftersom jag kodat sidan enligt xhtml-strict så är attributet "target" inte längre gångbart. Istället använder jag "rel". Se exempel.

<a href="document.html" rel="external">external link</a>

Själva scriptet ser ut så här:

function externalLinks() {   
 if (!document.getElementsByTagName) return;   
 var anchors = document.getElementsByTagName("a");   
 for (var i=0; i<anchors.length; i++) {   
   var anchor = anchors[i];   
   if (anchor.getAttribute("href") &&   
       anchor.getAttribute("rel") == "external")   
     anchor.target = "_blank";   
 }   
}   
window.onload = externalLinks;

Scriptet har jag sparat under filnamnet external.js.

Min fråga är om jag i detta script kan lägga till så att länken öppnas i ett separat fönster med en specifik placering, t.ex. om det är möjligt att även baka in följande i filen external.js?

<script language="JavaScript">

   function openPage(imagePath, width, height) {
      var settingsString = 'toolbar=no,resizable=no,scrollbars=no,width=' + width + ',height=' + height;
      window.open(imagePath, 'Sida', settingsString);
   }

</script>

Hoppas ni förstår hur jag menar.

Tack på förhand!
/Janne

Medlem sedan feb. 20034 441 inlägg
#2

Varför ska du göra det? Ditt "extra script" ovan öppnar ju redan ett nytt fönster. På dom ställen du ska använda det, så skippar du rel="external" och istället kör du:

<a href="#" onclick="openPage('image.jpg', 400, 400); return false;">LÄNK</a>

/r

Jaha, du vill endast ha in raden settingsString?
Blir nog svårt, jag tror att window.open() skiljer sig från hur en vanlig länk triggas.

Det du kan göra är att använda funktionen window.open() på alla länkar isf. för rel attributet.

Medlem sedan juni 20019 519 inlägg
#3

Eller efter if frågan

 if (anchor.getAttribute("href") &&   
       anchor.getAttribute("rel") == "external")

så gör du att den kör funktionen openPage, men jag vet inte riktigt vilka standard mått du är ute efter på höjd och bredd så det är lite svårt att veta hur du hade tänkt att lösa det, statiskt eller dynamiskt?
ananrs om det är 400x400:

function externalLinks() {   
	if (!document.getElementsByTagName) {
		return;
	}
	var anchors = document.getElementsByTagName("a");   
	for (var i=0; i<anchors.length; i++) {   
		var anchor = anchors[i];   
		if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "external") {
			openPage(anchor.getAttribute("href"), 400, 400);
		}
	}   
}   
window.onload = externalLinks;
Medlem sedan okt. 200932 inlägg
#4

Hej!
Tack för era svar. Får det inte att funka dock. Man får väl vara nöjd som det är men min tanke var att om fönstret öppnas utanför själva webbläsaren och dessutom placeras lite förskjutet så märker man ju mycket tydligare att länken öppnats i nytt fönster. Som det är med mitt rel-attribut så öppnas ju bara en ny flik vilket man knappt märker. Åtminstone inte innan man ska backa tillbaka vilket inte går. Lätt att bli irriterad.

262 ms totalt · 4 externa anrop · v20260731065814-full.b8c362d6
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)