webForumDet fria alternativet

Imageloader - hitta fem fel

JavaScriptur Javascript

6 svar · 222 visningar · startad av haider

haiderMedlem sedan jan. 2003956 inlägg
#1

Hitta fem fel, nä bara skojar.

Men kan nån se varför detta script inte funkar?
Jag lyckades till och med få en MSIE5 att hänga sig, men nu funkar den på både IE5 o 6 dock endast när jag klickar på länken, trycker back (eftersom bilden först inte syns) och forward, då syns bilden.

----------
function imageLoad(imageSrc){

bildsidan = window.open('','_self');

bildsidan.document.write('<html><head><title></title><META HTTP-EQUIV="imagetoolbar" CONTENT="no"><META HTTP-EQUIV="Expires" CONTENT="-1"></head>')
bildsidan.document.write('<body bgcolor="#FFFFFF" onContextMenu="return false;" onSelectStart="return false;" onDragStart="return fals;">');
bildsidan.document.write('<center><img src="' + imageSrc + '" alt="Klicka för att gå tillbaka" name="bilden" onClick="history.back()"></center></body></html>');

}
-------

Som ni förstår, så skriver jag alltså t.ex

<a href="javascript:imageLoad('bild_1.jpg')"> ... </a>

för att köra igång skriptet.

Peter SMedlem sedan dec. 20025 483 inlägg
#2

Testa detta:

<head>
<script>

function imageLoad(imageSrc){

var bildsidan = window.open('','_self');
bildsidan.document.open();
bildsidan.document.write('<html><head><title></title><META HTTP-EQUIV="imagetoolbar" CONTENT="no"><META HTTP-EQUIV="Expires" CONTENT="-1"></head><body bgcolor="#FFFFFF" onContextMenu="return false;" onSelectStart="return false;" onDragStart="return false;"><center><img src="' + imageSrc + '" alt="Klicka för att gå tillbaka" name="bilden" onClick="history.back()"></center></body></html>');
bildsidan.document.close();

} 

</script>
</head>

<a href="javascript:void(imageLoad('bild_1.jpg'))">Foo</a>

:)

haiderMedlem sedan jan. 2003956 inlägg
#3

Tack ska du ha :)

Ett par frågor dock

Jag lyckades att få det att funka både med och utan .open() och .close()

Är dessa extra rader för Netscape?

Fråga2
Jag hade stora problem i början, eftersom jag trodde att det skulle räcka med open() o close().
Det löste sig inte förrän jag skrev om allt (.write(...) till en rad. Hur kommer det sig att det måste vara så?

Jag har för mig att jag kunnat få det att fungera så.

Fråga3
Slutligen, så undrar jag, vad det innebär att skriva void()

Tackar för din hjälp

Peter SMedlem sedan dec. 20025 483 inlägg
#4

1. Nej, open() respektive close() är inte bara för Netscape. Jag antar att du fick det att fungera utan dessa med Internet Explorer ;) Med en striktare webbläsare som Mozilla dock, fungerar det inte.

2. Följande fungerar:

function imageLoad(imageSrc){

var bildsidan = window.open('','_self');
bildsidan.document.open();
bildsidan.document.write('<html><head><title></title><META HTTP-EQUIV="imagetoolbar" CONTENT="no"><META HTTP-EQUIV="Expires" CONTENT="-1"></head>');
bildsidan.document.write('<body bgcolor="#FFFFFF" onContextMenu="return false;" onSelectStart="return false;" onDragStart="return false;"><center><img src="' + imageSrc + '" alt="Klicka för att gå tillbaka" name="bilden" onClick="history.back()"></center>');
bildsidan.document.write('</body></html>');
bildsidan.document.close();

}

3. void är en operator som t.ex. kan användas för att exekvera JavaScript-kod med javascript: utan att ändra det aktuella fönstrets innehåll, d.v.s. void gör att att ingenting returneras. Testa följande två kodsnuttar så får du se!

<a href="javascript:window.open()">Öppna</a>
<a href="javascript:void(window.open())">Öppna</a>

:)

haiderMedlem sedan jan. 2003956 inlägg
#5

Vilken otrolig skillnad mellan med eller utan void.
Den utan förstör i window.open exemplet.

Det är konstigt att jag inte stött på det problemet innan, men troligen syns det mest i window.open eftersom det rör sig om att öppna nya fönster, eller är det för att det rör sig om en <a href>-tag?

Angående punkt2, så verkar det inte funka för mig. Det bästa verkar vara att lämna hela paketet i en enda rad.

Mest av nyfikenhet så undrar jag varför det kan vara så. Är det så att man måste skriva nåt plus i slutet?

Peter SMedlem sedan dec. 20025 483 inlägg
#6

Koden under punkt 2 skall fungera. Har du testat just den versionen?

:)

haiderMedlem sedan jan. 2003956 inlägg
#7

När jag skrev av din, så funkade det.
När jag klämde in nedanstående rad mellan ..CONTENT="-1"> och </head> så hänger sig explorer.

<SCRIPT src="http://www.animadesign.se/script/prntscrnavoid.js" type=text/javascript></SCRIPT>

Har du nån aning vad det kan vara?

När jag däremot skriver (som en enda write()-rad):

function imageLoad(imageSrc){

bildsidan = window.open('','_self');

bildsidan.document.open();
bildsidan.document.write('<html><head><title></title><META HTTP-EQUIV="imagetoolbar" CONTENT="no"><META HTTP-EQUIV="Expires" CONTENT="-1"><SCRIPT src="http://www.animadesign.se/script/prntscrnavoid.js" type=text/javascript></SCRIPT></head><body bgcolor="#FFFFFF" onContextMenu="return false;" onSelectStart="return false;" onDragStart="return fals;"><center><img src="' + imageSrc + '" alt="Klicka för att gå tillbaka" name="bilden" onClick="history.back()"></center></body></html>');
bildsidan.document.close();

}

... så funkar det.

Det är lite märkligt.

136 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)