Avatar billede rold Nybegynder
22. marts 2004 - 22:20 Der er 8 kommentarer

Automatisk centreret popup med "shake" effekt

Hej

Jeg skal lave et popup vindue der automatisk åbner når man kommer ind på siden. Vinduet skal åbne midt på skærmen og må gerne have den der "shake" effekt, hvor hele vinduet ryster et kort øjeblik i starten.

Nogen bud?

-Rold
Avatar billede skovenborg Nybegynder
22. marts 2004 - 22:32 #1
prøv med at skrive dette i dit hovedvindue:
<body onload="window.open('popup.htm','vindue','width=300,height=300');">

og i din popup.htm skriver du i headeren:
<script type="text/javascript">
var num = 0;
var range = 5;
var times = 20;
function shakeWindow() {
      x = (Math.round(Math.random()) == 1) ? Math.ceil(Math.random()*range) : -Math.ceil(Math.random()*range);
      y = (Math.round(Math.random()) == 1) ? Math.ceil(Math.random()*range) : -Math.ceil(Math.random()*range);
      self.moveBy(x,y);
      if (num++ == times) clearTimeout(timer);
}
timer = setInterval("shakeWindow();",50);

</script>
Avatar billede rold Nybegynder
22. marts 2004 - 22:49 #2
Den åbner ikke midt på skærmen, og den "shaker" heller ikke...
Avatar billede skovenborg Nybegynder
22. marts 2004 - 22:59 #3
okay for at få den i midten kan du gøre noget i den her stil:

Hovedvindue:
<script type="text/javascript">
function openWindow(url,width,height) {
      x = screen.width/2-width/2;
      y = screen.width/2-height;
      window.open(url,'vindue',"width="+width+",height="+height+",left="+x+",top="+y);
}
</script>
</head>
<body onload="openWindow('popup.htm',300,300)">

Angående den shake-effekt kunne du lige uddybe hvad den helt præcis går ud på. Jeg har selv testet min "shake-effekt" og den virker sådan set som jeg havde troet en shake-effekt skulle se ud.

Er du sikker på du har tilføjet shake-scriptet indeni i det vindue du åbner?
Avatar billede olebole Juniormester
22. marts 2004 - 23:04 #4
<ole>

Du kan kikke i koden på denne, som jeg lavede for nogle år siden  :)
  http://www.tjenester.dk/x-codes.dk/dollar/

Vælg 'Osama' - så kan du se shake-effekten. Koden til den effekt er ganske simpel.

/mvh
</bole>
Avatar billede rold Nybegynder
23. marts 2004 - 23:45 #5
Smid et svar Skovenborg, nu virker det. Et lille tillægsspørgsmål: Hvad gør "var num= 0;" øverst i det første script? -Jeg synes ikke der sker de store ændringer, når jeg ændrer værdierne.

-Rold
Avatar billede skovenborg Nybegynder
24. marts 2004 - 00:15 #6
okay :-)

num er egentlig ikke en variabel som du har nogen glæde af at ændre. Og i teorien kunne du også bare udelade det og skrive:
<script type="text/javascript">
var range = 5;
var times = 20;
function shakeWindow() {
      x = (Math.round(Math.random()) == 1) ? Math.ceil(Math.random()*range) : -Math.ceil(Math.random()*range);
      y = (Math.round(Math.random()) == 1) ? Math.ceil(Math.random()*range) : -Math.ceil(Math.random()*range);
      self.moveBy(x,y);
      if (times-- == 0) clearTimeout(timer);
}
timer = setInterval("shakeWindow();",50);

</script>

num var bare den der tælte op før, sådan at scriptet ikke fortsatte i en uendelighed.
Jeg kan i grunden også lige forklare de to andre:
times er (som du sikkert har gættet) hvor mange gange den skal "shake"
range er i hvor stort omfang der skal ryste - en høj range betyder at vinduet kommer til at ryste mere voldsomt.
Ud over det kan du også ændre 50-tallet i:
timer = setInterval("shakeWindow();",50);
på den måde kan du bestemme hvor hurtigt eller langsomt den skal shake.
Avatar billede roenving Novice
24. marts 2004 - 00:24 #7
>>skovenborg

For god ordens skyld ville jeg i en sammenligning bruge:

if(--times==0)

Fordi en -- (eller ++) sat foran udføres inden den pågældende forekomst af variablen valideres, mens valideringen først udføres bagefter med eftersatte ...

Eksempel:

I den viste kode vil times første gang sammenligningen foretages have værdien 20, og først efter at sammenligningen er udført vil den ændres til 19 !-)

Ligeledes vil rystelserne udføres 21 gange, da times når værdien 0 den 20. gang kodestumpen gennemløbes, men først _efter_ sammenligningen !o]
Avatar billede skovenborg Nybegynder
24. marts 2004 - 00:41 #8
roenving >> Ja, du har helt ret. Spekulerede ikke lige så meget over om scriptet udførte det det rigtige antal gange - men jo for en god ordens skyld bør man skrive --times.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester