Avatar billede learner Praktikant
12. april 2006 - 14:59 Der 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';

</SCRIPT>

<div id="ventvenligst" style="z-index:1001;position:absolute;left:0px;top:0px;margin:0px;width:100%;height:100%;font-size:25px;color:red;background-color:white;display:none;text-align:center;"><strong><br><br>Vent venligts</strong></div>

<?php
require($_SERVER["DOCUMENT_ROOT"]."/bund.php");
?>

Hvorfor virker det ikke?

Det skulle gerne resultere i: siden åbnes og med det samme køres vent() og div'en vises og den sendes videre med top.location.href
Avatar billede learner Praktikant
12. april 2006 - 15:29 #1
Kan man ikke bare skrive :
<SCRIPT LANGUAGE="JavaScript">
vent();
top.location.href='fil.php?update_match=true';
</SCRIPT>

Eller skal jeg indsætte det i noget onload=vent(); halløj

Tak :o)
Avatar billede mclemens Nybegynder
12. april 2006 - 17:01 #2
[ 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';
}
Avatar billede learner Praktikant
12. april 2006 - 21:19 #3
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>
Avatar billede learner Praktikant
12. april 2006 - 21:27 #4
jeg vil simpelthen åbne et script i iframen, som kører færdig og bagefter opdaterer parent siden
Avatar billede mclemens Nybegynder
12. april 2006 - 21:48 #5
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 ???
Avatar billede mclemens Nybegynder
12. april 2006 - 21:49 #6
Du kan evt. prøve at putte denne linje ind i dit
php script hvis det er caching der driller...

<?php header("Cache-Control: max-age=".((23-date("H"))*3600+(59-date("i"))*60+60-date("s")+10800)); ?>
Avatar billede mclemens Nybegynder
12. april 2006 - 21:50 #7
hov, sæt lige max-age til 0 ...
Avatar billede mclemens Nybegynder
12. april 2006 - 21:58 #8
parent.document.location.reload(true);
kan måske også bruges istedet for
parent.location.href='file.php';
Avatar billede learner Praktikant
12. april 2006 - 22:03 #9
3. iframen kører efter load siden over på file.php
skal være
3 originalsiden(parent hedder det vist) skal vise 'file.php'

----

Hvad gør 'Cache-Control: max-age' tingen ??
Avatar billede mclemens Nybegynder
12. april 2006 - 22:21 #10
[ 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.
Avatar billede learner Praktikant
13. april 2006 - 00:08 #11
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=

Skulle jo helst virke i flest browsere

Tak for altsammen :o)

Smid et svar mclemens :o)
Avatar billede mclemens Nybegynder
13. april 2006 - 00:19 #12
Tak for altsammen :o)
- Det var så lidt :)

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...
Avatar billede learner Praktikant
13. april 2006 - 01:49 #13
Ja det lyder helt rigtigt hvad du skriver..

Takker :o)
Avatar billede mclemens Nybegynder
13. april 2006 - 01:51 #14
og takker 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