---
title: "Popup till bilder"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/140700-popup-till-bilder"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "Melea"
published: "2006-01-11T20:07:48.000Z"
updated: "2006-01-13T21:59:37.000Z"
replies: 19
views: 534
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/javascript/140700-popup-till-bilder"
---

# Popup till bilder

## #1 — Melea, 2006-01-11T20:07Z

Tjenixen!

Nu ska jag banne mig lära mig javascript, så jag behöver allting förklarat för mig, steg för steg. :p
Det är så att jag har ett bildarkiv med thumbnails, och man ska kunna klicka på dessa bilder för att få upp orginalstorleken i ett nytt fönster, som är anpassat till bildens storlek.
Har börjat lite smått

```
<script type="text/javascript">
function imagePopup(lnk) {

	popupWindow = window.open("", "", "scrollbars=no, resizable=yes, toolbar=no, location=no, directories=no, status=no, menubar=no, width=700, height=500");
	with(popupWindow.document) {

		open();
		write("<img src=\""+lnk+"\" style=\"border: 0;\" alt=\"\" />");
		close();

	}

}
</script>

<a href="pic.jpg" onclick="imagePopup(this.href); return false;">
<img src="pic.jpg" style="border: 0;" alt="" />
</a>
```

Hur gör jag nu om jag vill ändra storleken på fönstret, så att det blir bildens bredd/höjd?

Tack! :)

Permalänk: https://www.webforum.nu/p/140700

## #2 — Peter S, 2006-01-11T20:38Z

Eftersom du vill ändra fönstrets storlek kan window.resizeTo()användas:

```
write("<body onload=\"window.resizeTo(document.images[0].width,document.images[0].height)\">");
```

Det första argumentet anger fönstrets bredd och det andra argumentet dess höjd. Med document.images\[0\] hämtar vi en referens till dokumentets första bildobjekt (det skriver ut på raden under denna). Bredd och höjd får vi med .width respektive .height.

Nu, på dessa värden är det inte omöjligt att du får addera något tal för att få det som du vill. Sedan har ju de olika webbläsarna benägenheten att rendera saker och ting annorlunda ändå  :) 

Om fönstrets dimensioner går att ändra på användarnivå kanske du också vill använda body.onresize.

Jag kan passa på att tipsa om Jojoxx popupskript. De tar hänsyn till både det ena och det andra. Vill du ha dem förklarade är det bara att posta något här.

Permalänk: https://www.webforum.nu/p/1745041

## #3 — Melea, 2006-01-12T17:06Z

Tack Peter! :)

Jag tittade på Jojoxx popupscript och kom fram till att detta passar mitt ändamål bäst

```
<script type="text/javascript">

	/*  The code contained in this  file is copyrighted by [url]www.jojoxx.net[/url]
	The file may be used for none commercial applications and distributed
	as long as these lines remain intact.  The file or part of it may not
	be sold  or  included  in any  other commercial  application  without
	agreement from the author. If you have questions or comments, contact
	the author at [url]http://www.jojoxx.net[/url]

	© Copyright - [url]www.jojoxx.net[/url] - 2004                                */

	function imgPopup5(url) {

		var loader=new Image();
		var top=parseInt(screen.height/2-50); var left=parseInt(screen.width/2-50);
		var tempwin=window.open("","","scrollbars=no,resizable=yes,toolbar=no,location=no,directories=no,status=no,menubar=no,width=100,height=100,top="+top+",left="+left);

		with(tempwin.document) {

			open();
			write("<html><head><title>Bildvisare</title></head><body marginwidth=0 marginheight=0 leftmargin=0 topmargin=0 rightmargin=0 style=\"overflow:hidden;background-color:black;color:white;\">");
			write("Vänta medans bilden laddar");
			write("</body></html>");
			close();

		}

		loader.onload=function() {

			var top=parseInt(screen.height/2-this.height/2);
			var left=parseInt(screen.width/2-this.width/2);
			tempwin.close();
			MyWin = window.open("","","scrollbars=no,resizable=yes,toolbar=no,location=no,directories=no,status=no,menubar=no,width="+this.width+",height="+this.height+",top="+top+",left="+left);

			with(MyWin.document) {

				open();
				write("<html><head><title>Bildvisare</title></head><body marginwidth=0 marginheight=0 leftmargin=0 topmargin=0 rightmargin=0 style=\"overflow:hidden;\">");
				write("<img id='myimg' src=\""+url+"\">");
				write("</body></html>");
				close();

			}

		}

		loader.src=url;

	}

</script>

<a href="pic.jpg" onclick="imgPopup5(this.href); return false;">
<img src="pic.jpg" style="border: 0;" alt="" />
</a>
```

Det känns som jag förstår vad koden gör, bara det att jag måste öva en jäkla massa för att lära mig de olika syntax:erna utantill.

Det verkar dock som att den ovanstående koden vill att man måste acceptera popups för just den sidan, vilket inte något av de andra scripten Jojoxx har gjort gör.
Vad är det som skiljer detta från de andra?
Har stirrat mig blind nu, men jag ser ingen markant skillnad, förutom att sidan laddas med "loader". Är det det som strular till att?

Permalänk: https://www.webforum.nu/p/1745407

## #4 — Peter S, 2006-01-12T18:51Z

Problemet verkar ligga i att popupen genereras genom bildens onloadattribut (vilket kan jämföras med t.ex. window.onload i vilken popups också blockeras). Det lustiga med koden är att popupen bara blockeras varannan gång för mig i Firefox.

Du kanske får ta en annan av Johans varianter - en utan förladdningsfönster.  :)

Permalänk: https://www.webforum.nu/p/1745446

## #5 — Melea, 2006-01-12T19:19Z

Använder en annan variant nu, men det vore toppen om man öppnade ett fönster, som anpassade sig till bildens storlek, men ändå var ett dokument som jag själv har döpt och kan ändra i.
Typ som WebTor har på <http://www.tor.nu/>

Några förslag? :)

Permalänk: https://www.webforum.nu/p/1745452

## #6 — Peter S, 2006-01-12T19:59Z

Beroende på hur du visar dina bilder kan det göras på några olika sätt.

```
// huvudfönstret med tumnaglarna
// php har väl några trevliga funktioner för att ta reda på bilders dimensioner?
<a href="image.php?img=[b]bildnamn[/b]&width=[b]bredd[/b]&height=[b]height[/b]" onclick="return openWin(this.href)">

function openWin(url){
  window.open(url, "imgPopup", "height=100,width=100");
  return false;
}

// i image.php använder du sedan querystring-variablerna så här
// nb. att sätta GET-värdena direkt i openWin() går ju också
<head>
<script type="text/javascript">
window.resizeTo($_GET['width'], $_GET['height']);
</script>
</head>
```

Du kan som sagt behöva addera något mysigt tal till GET-värdena.  :)

Permalänk: https://www.webforum.nu/p/1745472

## #7 — Melea, 2006-01-13T16:23Z

> **Peter S skrev:**
>
> Beroende på hur du visar dina bilder kan det göras på några olika sätt.
>
>
> ```
> // huvudfönstret med tumnaglarna
> // php har väl några trevliga funktioner för att ta reda på bilders dimensioner?
> <a href="image.php?img=[b]bildnamn[/b]&width=[b]bredd[/b]&height=[b]height[/b]" onclick="return openWin(this.href)">
> 
> function openWin(url){
>   window.open(url, "imgPopup", "height=100,width=100");
>   return false;
> }
> 
> // i image.php använder du sedan querystring-variablerna så här
> // nb. att sätta GET-värdena direkt i openWin() går ju också
> <head>
> <script type="text/javascript">
> window.resizeTo($_GET['width'], $_GET['height']);
> </script>
> </head>
> ```
>
> 
> Du kan som sagt behöva addera något mysigt tal till GET-värdena.  :)

Tack Peter! :)
Jo, i php kan man skriva getimagesize() för att ta fram storleken och lite annat på bilden, så det fixar sig nog.

En annan fråga, som jag lika gärna kan ställa här istället för att skapa en ny tråd.
Danny tipsade mig [här](http://www.webforum.nu/attachment.php?attachmentid=9207) om hur det skulle kunna se ut på sidan.
Saken är ju den att varje gång jag väljer en ny bild i vänsterkanten så laddas sidan om. Detta skulle jag kanske kunna lösa genom att lägga det i en frame eller dyl, men jag tycker inte det är en snygg lösning. :)
Så, kan jag lösa det med javascript på något vis? Att varje gång jag markerar en bild i vänsterkanten så uppdateras bildens src="" värden automatiskt i mitten?

Tack!

Permalänk: https://www.webforum.nu/p/1745836

## #8 — Peter S, 2006-01-13T16:27Z

Ligger bilderna i vänsterkanten och mittenbilden i samma dokument? Då

```
<img src="foo.jpg" onclick="displayImg(this.src, '[b]name[/b]-pa-mittenbild')" style="cursor:pointer" />

function displayImg(u, n){
  document.images[n].src = u;
}
```

  :)

Permalänk: https://www.webforum.nu/p/1745839

## #9 — Melea, 2006-01-13T18:04Z

Vill inte riktigt funka, bilderna i mitten hämtas genom en php-fil för att skapa thumbnails.

```
<script type="text/javascript">

function displayImg(u, n){
	document.images[n].src = u;
}

</script>

...

<?

...

echo '
<ul>

<li>
<img src="thumb.php?picture=images/photo/1.jpg&amp;size=90" onclick="displayImg(this.href, \'m_pic\')" style="border: 3px solid #fff; cursor: pointer;" alt="" />
</li>

<li>
<img src="thumb.php?picture=images/photo/2.jpg&amp;size=90" onclick="displayImg(this.href, \'m_pic\')" style="border: 3px solid #fff; cursor: pointer;" alt="" />
</li>

</ul>
';

...

?>

...

<img src="thumb.php?images/photo/1.jpg&ampsize=120" style="border: 3px solid #fff;" name="m_pic" alt="" />
```

Permalänk: https://www.webforum.nu/p/1745876

## #10 — Peter S, 2006-01-13T20:07Z

Skippa escape:ningen av apostroferna i funktionsanropet.  :)

Permalänk: https://www.webforum.nu/p/1745938

## #11 — Melea, 2006-01-13T20:17Z

Ah, använder dem för att de står i en echo. :)
Redigerar inlägget ovan.

Permalänk: https://www.webforum.nu/p/1745946

## #12 — Peter S, 2006-01-13T21:04Z

Sorry, hjärnsläpp! Ersätt this.href med this.src  :)

Permalänk: https://www.webforum.nu/p/1745958

## #13 — Melea, 2006-01-13T21:25Z

Det borde jag har listat ut själv. :OO

Hm, nu tar den ju med rubbet som står i src="", även size=90, vilket gör att bilden till vänster blir 90 pixlar bred. Måste jag lösa det med något reguljärt uttryck för att endast ta med 'images/photo/1.jpg'?

Permalänk: https://www.webforum.nu/p/1745968

## #14 — Peter S, 2006-01-13T21:29Z

```
this.src.match(/^.+?(?:gif|jpg|png)/)
```

 :)

Permalänk: https://www.webforum.nu/p/1745972

## #15 — Melea, 2006-01-13T21:36Z

Du är en klippa Peter! :)
Men nu får jag inte riktigt koll på hur jag ska bygga upp det, antagligen är det bara huvet som inte riktigt hänger med såhär på fredagskvällen.
Hur hade du byggt upp det?
Om vi säger att jag skulle vilja ha size=230 på högersidan, och size=90 på vänstersidan, hur gör jag då? :OO   :)

**/red** Hm, detta håller ju inte riktigt.  :r 
Eftersom adressen inte ändras i html-koden ändras inte heller länken till popupen som ska visa bilden i sin fulla storlek.
Sorry Peter, men det är faktiskt jag som har fått hjärnsläpp!
Hur hade du löst det?

Permalänk: https://www.webforum.nu/p/1745976

## #16 — Peter S, 2006-01-13T21:45Z

En möjlighet är att behålla this.src i funktionsanropet och sedan:

```
function displayImg(u, n, s){
	document.images[n].src = u.match(/^.+?(?:gif|jpg|png)/) + "&amp;size=230";
}

displayImg(this.href, \'m_pic\', 230);
```

  :)

Permalänk: https://www.webforum.nu/p/1745978

## #17 — Melea, 2006-01-13T21:51Z

Menar du inte såhär?

```
function displayImg(u, n, s){
	document.images[n].src = u.match(/^.+?(?:gif|jpg|png)/) + "&amp;size=" + s;
}

displayImg(this.src, \'m_pic\', 230)
```

Men det funkar inte riktigt. :)

Permalänk: https://www.webforum.nu/p/1745980

## #18 — Peter S, 2006-01-13T21:53Z

Hm, jag hann inte med redigeringen. Jag tror på idén att endast ha en variant av tumnaglar på sidan (antingen till vänster eller centralt). Funktionaliteten skulle jag sedan hämta från inlägg #6.

Det blir nog för mycket pillande med JavaScript för att det skall vara värt mödan annars.  :)

Permalänk: https://www.webforum.nu/p/1745982

## #19 — Melea, 2006-01-13T21:56Z

Okej, ett sådant svar jag hade hoppats på faktiskt. :)
Tack så väldigt mycket för hjälpen Peter!

Permalänk: https://www.webforum.nu/p/1745983

## #20 — Peter S, 2006-01-13T21:59Z

Skulle du lista ut något fräckt alternativ som ingen tänkt på tidigare, är det ju bara att återkomma  :)

Permalänk: https://www.webforum.nu/p/1745984

---

Tråden på webben: https://www.webforum.nu/amne/javascript/140700-popup-till-bilder
