webForumDet fria alternativet

Kan man utföra något när en iframe har laddat klart?

JavaScript

9 svar · 576 visningar · startad av haider

Medlem sedan jan. 2003956 inlägg
Frågan#1

Kan man utanför en iframe utföra något när iframen har laddat klart?
Just nu har jag ett formulär som har en action med target till en iframe. Så när man submittar, har jag en DIV som poppar upp och som talar om att submitten har utförts. Ibland är internet segt och popupen talar om att submitten är utförd när den i verkligheten ännu tuggar på.
Så jag satt o funderade på o man inte kan ha en div med text som säger "laddar" och sen byter ut innerHTML när iframen har laddat klart.

Jag är rätt säker på att det inte är en lösning att ha en onload i iframens body, utan den checken måste ske ifrån submitknappen.

Medlem sedan juni 200032 967 inlägg
#2

Eftersom innehållet i iframen är en vanlig html-fil eller liknande så är det ju bara att använda onload-eventet.

Medlem sedan jan. 2003956 inlägg
#3

alltså kort och gott iframe.namn.onload ?

Medlem sedan juni 200032 967 inlägg
#4

Det är möjligt att man kan lösa det så, men jag tänkte mig i filen som ligger i iframen.

Medlem sedan jan. 2003956 inlägg
#5

Att filen i iframen utför saker vid onload?
I så fall är det inget alternativ, som jag skrev i första inlägget, eftersom det blir svårt att styra det jag hade tänkt mig.
Tänk dig en submitknapp som utför något som händer i en iframe. Om den gör en kontroll om när iframen är laddad, kan den utföra ett andra kommando.
Lägger man kontrollen i iframen, så blir det (kanske) svårt att utföra ett kommando som är unikt för när submit har tryckts. Antag att iframen uppdateras spontant och så körs en alert('tack för att du submittade') men så har man ju inte submittat, bara uppdaterat iframen.
Däremot har man större kontroll när man kör alert('tack för att du submittade') genom submitknappen, strax efter att iframen laddat klart.

Medlem sedan dec. 20025 483 inlägg
#6

På iframen kan du använda onload-eventet som du skrev i inlägg #3, alltså: <iframe onload=""...

Medlem sedan jan. 2003956 inlägg
#7

Jo, det är sant.
Men jag befarar att den inte kommer att hjälpa mig. Iframen finns i ett större antal sidor. Varje gång man byter sida, så finns en iframe där med samma src. Med andra ord laddas den om och om igen.
Antag att en popup ska komma när man submittar något med iframen som target. Popupen säger "tack", men först efter att den laddat klart efter submittingen.
Väljer man att tacket kommer genom <iframe onload="", så innebär det att varje gång man byter sida så kommer den att popuppa tack. Det blir ju fel.
Så därför tänkte jag att man vill styra vad som sker genom submitknappen.

Det finns ju document.onload som man kan använda varhelst i dokumentet. Jag får en känsla av att det borde finans en likadan grej, men som kollar att iframen i dokumentet.

Snubblade på den här:
http://www.codingforums.com/archive/index.php/t-22861.html

Har ännu inte testat på den, ska försöka hinna med senare.
Om någon av er vet att det funkar, så säg gärna till :)

Medlem sedan dec. 20025 483 inlägg
#8

Typ så här då:

// Global variabel
var isFormSubmitted = false;

function f()
{
  if (isFormSubmitted)
  {
    // do stuff
    // ...
    isFormSubmitted = false;
  }
}

<iframe onload="f()">

<form target="...">
  <input type="submit" onclick="isFormSubmitted=true">
</form>
Medlem sedan jan. 2003956 inlägg
#9

Hmm.. Jag kunde inte tänka så här långt i javascript ;)
tack peter, det här kan vara mycket lättare.
Ska prova på det med.

Medlem sedan jan. 2003956 inlägg
#10

Tack igen Peter, det här gjorde susen.
Jag hade helt glömt bort tekniken med globala variabler. Din lösning visade sig enklare än jag trodde eftersom den flöt ihop med mitt projekt galant. :)

253 ms totalt · 4 externa anrop · v20260731065814-full.2f471f9e
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)