Till Startsidan

Skaffa webbhotell?
Läs JavaScript.nu's jämförelse av webbhotell.
Med priser från
9 kr / månad.

Genom ett samarbete får alla JavaScript.nu-
besökare dessutom 100 kr i rabatt vid beställning.


Re: Iframe med Javascript

[ JavaScript.nu's Forum ] [ Viktigt om forumet ] [ JavaScript.nu's Startsida ]


Forum / Iframe med Javascript
 Jo, det är just som du menar som jag har tänkt mig, problemet är snarare med buggar :/

I det här fallet verkar ändå lösningen ganska enkel; byt ut

var f=function(){gotoLoc(loc);}; //Använder extern function istället

mot

var f=function(){gotoLoc(toloc);}; //Använder extern function istället

Felet är helt enkelt ett typo, som öppnar sidan utan fade (med rätt kod ska ?fade=yes läggas till, och när en sida med ?fade=yes laddas ska en fade-in-effekt ske).
Jag är ganska säker på att detta borde fungera, då man FÅR fram den korrekta effekten genom att - även utan bugfixen - länka direkt till "sidan.html?fade=yes".

Förresten kanske jag ska förklara var fading-parametrarna ska ändras. Raden:

fade(whitescreen,100,0,4,10,function(){whitescreen.style.visibility="hidden";});

är fade-in-anropet. Det första argumentet är vad som ska visas (whitescreen är ett svart (ursprungligen vit) div som täcker hela framen), det andra är var faden ska börja (100%), det tredje slutet (0%), det fjärde är hoppen som ska göras (uppdatera bara fade:en var 4:e procent - för prestanda) det femte är hastigheten (10 millisekunder per procent * |(100-0)| = 1000 ms = 1 sekund. T.ex. för att få en halv sekund ska du alltså halvera värdet), och det sjätte är functionen som ska köras efter faden (i det här fallet ska divet försvinna för att man ska kunna använda sidan.

När jag tänker på det, skulle man faktiskt kunna lägga till en blockning i fade-in:en. Lägg då till "blockall=false;" i callbackfunction:

fade(whitescreen,100,0,4,10,function(){whitescreen.style.visibility="hidden";blockall=false;});

och lägg till

blockall=true;

på raden framför. Då slipper du att sidan ändras medans den fade:as, vilket kan ge grafiska fel.

Fade-outen är på liknande sätt

fade(whitescreen,0,100,4,10,f);

Alltså: divet ska fade:as från 0% till 100% med ett hopp på 4% på tiden 1 sekund (10ms*|(0-100)| = 10ms * 100 = 1000ms = 1 sekund) och "f" ska köras efter (där f är en lokal function, som helt enkelt öppnar den andra sidan).

Hoppas det är förståeligt, och fungerar :)

Simon

 
Hejsan! Nu är "visited" problemet löst.

Men antingen har du missförstått mig eller så är det fortfarande fel, jag vill att det även ska fadas IN, alltså en fade-out på 1 sekund följt av en fade-in på 1 sekund. Så att det fadas åt båda hållen, nu blir det ju lite plötsligt när nya sidan kommer och inte lika mjukt som om framen hade fadat tillbaks också.


Förstår du?

Tack!!

/Erik

 
Vad bra!

Scriptet som jag använder är faktiskt inställt så att det ska gå till svart och sedan tillbaka, och att det ska ta ca 2 sekunder. Felet verkar istället vara en bug: när länkarna klickas öppnas sidorna som vanligt, och ingen hänsyn till fading finns (dock hinner faden påbörjas).
Lösning bör vara enkel; byt ut

links[i].onclick=function(){pwin.frames['prodruta'].capLinks(this.href);}

mot

links[i].onclick=function(){pwin.frames['prodruta'].capLinks(this.href);return false;}

, vilket får länken att öppnas genom fading-kontrollen istället på vanligt sätt. Detta borde fungera ;)

Simon

 
Nu händer det något iallfall!

Dock verkar det som effekten försvinner när länken blivit besökt. Kolla själv! Ang själva effekten: hur gör jag för att den ska fada till helt svart och sedan från helt svart till full alpha på nästa sida? Måste ställa in lite ser det ut som. Faden bör ta ca 2 sekunder totalt. En sekund åt varje håll.

Tackar!

/Erik

 
Det ser bra ut det du skrivit, felet är i min kod ser jag nu.

Jag skrev:
function(){frames['prodruta'].capLinks(this.href);}

vilket ger fel eftersom den lokala varianten av 'frames' överlagrar variabelnamnet (sk. closure), vilket jag inte tänkt på alls.
Prova att byta ut hela for-loopen runt det från

for(var i=0;i<links.length;++i){
if(links[i].href.charAt(0)!='#')
links[i].onclick=function(){frames['prodruta'].capLinks(this.href);}
}

till

var pwin=parent;
for(var i=0;i<links.length;++i){
if(links[i].href.charAt(0)!='#')
links[i].onclick=function(){pwin.frames['prodruta'].capLinks(this.href);}
}

Om jag inte har fel (men det har jag antagligen) så borde det fungera.

Simon

 
Menar du något speciellt med "ombytta länkar"? i "och lägga de ombytta länkarna i en <div id="container">."

Nu jag jag lagt containerdiv:en runt om mixning, mastring, konsultering och pris-länkarna på huvudsidan där iframen finns.

Rätt?


 
Har rättat till allt nu.

Dock är det stendött!

Ang ";" iweb genererar sådana automatiskt efter bodyelementen, förutom den sista då. Är det bäst att köra utan helt och bara ha mellanrum mellan elementen?

/Erik
 [förkortat för längd]


Postat av Simon (85.224.35.7) den 15 Mars, 2009 kl 12:00:36.
Som svar på: Re: Iframe med Javascript postat av Erik Wiss den 14 Mars, 2009 kl 22:22:51.


Svar på inlägget:


Posta ett svar:

Namn:
E-Mail:
Rubrik:
Meddelande:
Ja tack, maila mig om andra svarar på detta inlägg.
Ja tack, maila mig om andra svarar på mitt inlägg.


[ JavaScript.nu's Forum ] [ Viktigt om forumet ] [ JavaScript.nu's Startsida ]






Copyright © Omid Rouhani 1997-2022; Alla rättigheter reserverade.
Guider: [ HTML guide ] - [ JavaScript guide ] - [ DHTML guide ] - [ Perl guide ] - [ Sitemap ]