Avatar billede claus_b. Novice
22. august 2001 - 04:07 Der er 14 kommentarer og
1 løsning

onload af frame i link?

hejsa! :)

og dagens spg. er: jeg har to frames(f1 og f2).
f1 har nogle links some åbner i f2.
jeg prøver så at finde ud af hvornår filen er loaded i f2, altså noget i retning af:
<a href=fil.htm target=f2 onClick=done()>tryk</a>

men det virker bare ikke :(
der må da findes en smart måde? :)
Avatar billede limemedia Nybegynder
22. august 2001 - 07:32 #1
Du kunne fra f2 kalde en onLoad=\"f1notify(\'Hey\')\" ? vil det ikke virke ?
Avatar billede ldanielsen Nybegynder
22. august 2001 - 09:03 #2
Hvad skal der ske når filen er loaded?
Avatar billede claus_b. Novice
22. august 2001 - 12:35 #3
den fil, der loades i f2 er ikke min, så jeg kan ikke ændre i dens kode.

fx. skal der bare alert(\"f2 er loadet\") eller noget andet.
Avatar billede olebole Juniormester
22. august 2001 - 14:38 #4
<ole>
Hvis ikke filen er din, har du af sikkerhedsmæssige grunde ingen mulighed for at script\'e på den pågældende frame. Du har derfor ikke umiddelbart mulighed for at overvåge den frame med JavaScript, heller.
Du kan dog gå en omvej ved at bruge serverside-scripting. Så kan du parse siden, du vil loade - skrive den ind i et nyt dokument, hvori du lægger en onload-handler. Denne nye fil kan du så loade ind i dit frameset.
Som du kan se, må du en besværlig omvej, hvis du vil loade et fremmed dokument og overvåge det samtidigt.
/mvh
</bole>
Avatar billede Slettet bruger
22. august 2001 - 16:37 #5
Jeg tror nok du i IE kan gøre således:
<script>
<!--
klar = false
function tjekDone() {
if (top.f2.document.readyState == \"complete\") {
klar = true
}
else {
setTimeout(\"tjekDone()\",2*1000)
}
}
</script>

Scriptet returnerer så klar = true hvis f2 er loaded. Hvis ikke venter den 2 sekunder, hvorefter den testes igen.
P.S. Du skal nok kalde f2 for fTo. Jeg har dårlige erfaringer med tal i javascript-navne!
Avatar billede Slettet bruger
22. august 2001 - 16:38 #6
Og hvis du vil have en alert (husk stadig kun i IE):
Jeg tror nok du i IE kan gøre således:
<script>
<!--
klar = false
function tjekDone() {
if (top.f2.document.readyState == \"complete\") {
alert(\"f2 er loadet!\")
}
else {
setTimeout(\"tjekDone()\",2*1000)
}
}
</script>
Avatar billede Slettet bruger
22. august 2001 - 16:39 #7
(glem anden txt-linje i mit foregående svar)
Avatar billede olebole Juniormester
22. august 2001 - 16:45 #8
Det vil jeg da ikke håbe, du kan - det er en klar overtrædelse af sikkerhedsreglerne. På den anden side...sikkerhedshuller er jo nærmest MS\' varemærke  =o)
/mvh
Avatar billede ldanielsen Nybegynder
22. august 2001 - 17:22 #9
Kan du ikke lave noget med



function CheckFrame(){
  if (top.f2.location == \"http://www.dom.dk/fil.htm\"){
    alert(\"ok\")
    window.clearTimeout(t)
  }else{
    t = window.setTimeout(\"Checkme()\",1000)
    }
  }

kald den med <a href=fil.htm target=f2 onClick=\"t = window.setTimeout(\'Checkme()\',10)\">tryk</a>
Avatar billede olebole Juniormester
22. august 2001 - 17:30 #10
Idanielsen >> Nej, det ville være mod sikkerhedsreglerne for JavaScript  :)
/mvh
Avatar billede Slettet bruger
22. august 2001 - 17:34 #11
document.readyState er i hvert fald en metode til at tjekke, om en side er loadet, så hvorfor skulle man egentlig ikke kunne bruge mit script?
Avatar billede olebole Juniormester
22. august 2001 - 17:36 #12
Fordi, siderne ligger under hvert sit domæne. Check JavaScript dokumentationen om \'Same Origin Policy\', hvis du ikke tror mig.
Avatar billede claus_b. Novice
22. august 2001 - 19:34 #13
olebole: så du mener ikke, at der er noget at gøre andet end at parse?

jeg kan vel også gøre det med php? :)
det prøver jeg ihvertfald :)

phoenixv: jeg har prøvet dit ex. med en fil på min egen server, men
top.f2.document.readyState == \"complete\"
aktiveres før frame2 er loaded færdig???
hvorfor skal der stå \"top\" i Koden?
Avatar billede ldanielsen Nybegynder
22. august 2001 - 20:04 #14
olebole > du har ret :o(
Avatar billede olebole Juniormester
22. august 2001 - 20:31 #15
Ja, du kan også inkludere en fremmed HTML-side i et PHP-dokument og så få lov til at scripte på frame\'en.

Når du er i et frameset, er den frame, du er i, et window-objekt. Hvis du skriver \'top\', referer du til det øverste window-objekt = browser vinduet selv.
/mvh
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