12. april 2006 - 14:59Der er
13 kommentarer og 1 løsning
åbn funktion og stil videre
Jeg kan ikke forstå hvorfor vent() funktionen ikke starter.
Her er en kort version af mit kode:
<?php require($_SERVER["DOCUMENT_ROOT"]."/top.php"); ?> <SCRIPT LANGUAGE="JavaScript"> function vent() { tt=(tmenu=document.documentElement.scrollTop)?tmenu:document.body.scrollTop; ty=(document.all) ? document.body.clientHeight : window.innerHeight; showHideSels('hidden'); // skjuler alle <select> ventv=document.getElementById("ventvenligst"); ventv.style.height = ty+"px"; // sørger for at højden er 100% ventv.style.display = "block"; //Viser beskeden ventv.style.top=tt; // placerer div'en samme sted som brugeren har scrollet ned til document.documentElement.style.overflow="hidden"; }
vent(); // hvorfor starter den ik? top.location.href='fil.php?update_match=true';
[ Hvorfor virker det ikke? ] - Fordi ligeså snart browseren når til vent(); forsøger den på at gennemføre scriptet og da siden ikke er loadet endnu kan det ikke lade sig gøre at udføre javascriptet så div'en vises...
[ Eller skal jeg indsætte det i noget onload=vent(); halløj ] Jeps :)
Prøv at skifte: vent(); // hvorfor starter den ik? top.location.href='fil.php?update_match=true';
til:
window.onload=function(){ vent(); // hvorfor starter den ik? top.location.href='fil.php?update_match=true'; }
Ja det virker. men ik helt som jeg havde forventet.. :o)
Så jeg har ændret planen lidt. Det jeg har lavet virker ikke. Jeg tror jeg har lavet fejl i disse 2 linier: parent.location.href='file.php'; window.loadFR.location.href='fil.php?update=true';
Her er der lidt om hvad jeg gør:
først åbnes siden og dette køres: <SCRIPT LANGUAGE="JavaScript"> window.onload=function(){ vent(); // viser besked om at det tager lidt tid osv // Nu åbnes et opdater-script skjult i en iframe med navnet 'loadFR' window.loadFR.location.href='fil.php?update=true'; } </SCRIPT>
i iframen sker dette : <?php script der opdaterer i db ?> <SCRIPT LANGUAGE="JavaScript"> window.onload=function(){ // parent siden reefreshes nu hvor databasen er opdateret parent.location.href='file.php'; } </SCRIPT>
iframen ser således ud: <iframe name="loadFR" src="about:blank" style="display:none"></iframe>
hmmm... hvis jeg sætter det op så sker der følgende: 1. Når forsiden loades vises div'en (vi snakker om ms. da det er lokalt) 2. iframens src rettes så den peger over på fil.php?update=true 3. iframen kører efter load siden over på file.php - og det hele gentages... jeg har dog i min test sat en timeout på det ellers løber det jo for hurtigt i opdatering så jeg rettede: window.loadFR.location.href='fil.php?update=true'; til: setTimeout("window.loadFR.location.href='fil.php?update=true';",1000);
- jeg ved ikke helt hvad problem du ha men her virker det fint ???
[ 3 originalsiden(parent hedder det vist) skal vise 'file.php' ] ... ja, det gør den også her... den sætter "parent" siden igang med at hente en ny fil der hedder file.php - dog forstår jeg stadig ikke hvad det er den ikke gør eller gør forkert?
[ Hvad gør 'Cache-Control: max-age' tingen ?? ] - Den hjælper med at sørge for at sider ikke bliver cached.
Nu forstår jeg det bedre hehe. Jeg var kommet til at skrive iframen's navn forkert, dummer fejl... Men det virker nu jubiii
Men hvilken skal man så vælge? der er så mange muligheder : window.['loadFR'].location.href= window.loadFR.location.href= top.loadFR.location.href= frames.loadFR.location.href=
og
parent.document.location.reload(true); eller parent.location.href=
window.loadFR.location.href= virker fint i IE og FF om der er en anden der er bedre med ældre browsere tør jeg ikke sige... jeg har lige lært js :/
parent.document.location.reload(true); ville jeg vælge da reload(true) skulle sørge for at der er en størrer sandsynlighed for at siden bliver opdateret med en evt. ny udgave...
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.