Avatar billede kahs Nybegynder
02. juni 2004 - 10:07 Der er 9 kommentarer og
1 løsning

Viser knap når hele siden er loadet

Hej Eksperter

Jeg har en side hvor der nederst er placeret en knap der kalder en funktion.
Er det muligt, at lave et script der gør, at knappen først bliver vist når hele siden er loadet?

Siden indeholder en masse iframes og mit problem er, at hvis knappen bliver aktiveret inden siden er færdig med at loade, så loader den slet ikke siden færdig og de iframes, der er på siden, kommer slet ikke op.

-KAHS
Avatar billede roenving Novice
02. juni 2004 - 10:37 #1
Så bliver du vel nødt til at registrere på hver eneste frame, at den er loadet ...

F.eks. sådan:

<script type="text/javascript">
var load = new Array();
load['main'] = load['right'] = load['bottom'] = load['all'] = false;

function showButton(){
  if(load['main']&&load['right']&&load['bottom']&&load['all']{
    document.getElementById('minKnap').style.visibility = 'visible';
  }else{
    setTimeout('showButton()',50);
  }

}
</script>

I hovedsiden:
<body onload="load['all']=true;showButton()">

I hver af dine iframes:
<body onload="parent.load['bottom']=true">
Avatar billede roenving Novice
02. juni 2004 - 10:41 #2
Hov, der mangler da noget:

  if(load['main']&&load['right']&&load['bottom']&&load['all']){
Avatar billede kahs Nybegynder
02. juni 2004 - 11:01 #3
Men antallet af iframes kan variere.

Det der loades til siden er en liste fra en database. Hver record der bliver vist på siden har en iframe, med en formular.
Dvs. antallet af iframes afhænger af antallet af records i databasen og den knap nederst på siden skal antivere funktionerne i disse iframes.
Avatar billede kahs Nybegynder
02. juni 2004 - 11:01 #4
antivere = aktivere
Avatar billede roenving Novice
02. juni 2004 - 11:28 #5
Du er stadig nødt til at stole på en tilbagemelding fra de sider, som loades i iframes ...

Hrm ...
I rigtige frames ville framesettet først aflevere loadet, når underframes var loadet, men jeg huskede altså rigtigt mht. iframes, der venter hovedvinduets dokument ikke på underframes load ...

Men har du det fra en database, må du vel også kunne noget lignende:

<body onload="load[0]=true;showButton();">

... dine iframes:
<iframe src="noget.asp?page=1"></iframe>

...

<iframe src="noget.asp?page=27"></iframe>

<button style="visibility:hidden;" onclick="goerNoget()">Aktiver sider</button>

<script type="text/javascript">
var pages = <%=antalSider%>;
var load = new Array();
for(i=0;pages>=i;i++)load[i]=false;

function showButton(){
  var show = true;
  for(i=0;pages>=i;i++)show = show&&load[i];
  if(show){
    document.getElementById('minKnap').style.visibility = 'visible';
  }else{
    setTimeout('showButton()',50);
  }

}
</script>

-- og du skal så have en onload i dine iframes, som skitseret ovenfor, i iframe 27:

<body onload="load[27]=true;">

-- det kan også laves uden fortløbende numre, men det vil være nemmest om du kreerer de fortløbende numre fra databasen !-)
Avatar billede kahs Nybegynder
02. juni 2004 - 11:31 #6
Jeg kan desværre ikke benytte ASP, jeg arbejder i et CMS-system der sætter ret mange grænser.
Avatar billede roenving Novice
02. juni 2004 - 11:39 #7
Du er nødt til at hente oplysningen om load fra dine iframes ...

Alternativet vil være at du simpelthen bare venter et stykke tid, før du enabler knappen, og så vil det være:

<button id="minKnap" disabled="disabled" onclick="goerNoget()">Aktiver sider</button>

<body onload="setTimeout('document.getElementById(\'minKnap\').disabled = false',1000);">

-- da det så sikkert vil være hensigtsmæssigt at man kan se at knappen ikke dur endnu !-)
Avatar billede kahs Nybegynder
02. juni 2004 - 12:55 #8
Ok, jeg prøver at løse det på den måde.
Tak for hjælpen :)
Avatar billede roenving Novice
02. juni 2004 - 13:11 #9
Velbekomme '-)
Avatar billede roenving Novice
02. juni 2004 - 13:51 #10
-- og tak for point ;~}
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