/ Forside/ Teknologi / Udvikling / Java Scripts / Spørgsmål
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
Automatisk refresh Iframe, doclængde og ~
Fra : aagesen
Vist : 608 gange
50 point
Dato : 08-01-03 09:26

Kan nogen hjælpe mig med noget JavaScript-kode, der automatisk refresher en URL i en Iframe og samtidig laver en alert til brugeren såfremt indholdet af denne URL er ændret (læs: dokumentet er blevet længere )siden sidste refresh.

Scriptet skal anvendes sammen med nedenstående kode:

<script language="javascript">document.write(script_der_laver_rammer_om_min_iframe);</script>
   <iframe name=ram1 src=en_eller_anden_side.html scrolling=auto frameborder="0"></iframe>
<script language="javascript">document.write(script_der_laver_rammer_om_min_iframe);</script>

Jeg forestiller mig at skulle erstatte "src=en_eller_anden_side.html" med noget i stil med "src=JavaScript:refresh('URL');"

Scriptet kan evt placeres i en js-fil og så kaldes fra siden, der indeholder min Iframe.
Det er kun et krav, at scriptet virker i IE - hvis det gør nogen forskel

Til orientering:
Følgende kode opfylder IKKE mit behov:
<META HTTP-EQUIV="refresh" content="2;URL=http://www.yoursite.com/newpage.htm">


 
 
Accepteret svar
Fra : Nyhedsbruger

Modtaget 50 point
Dato : 08-01-03 11:43

"aagesen" <aagesen.news@kandu.dk> writes:

> Kan nogen hjælpe mig med noget JavaScript-kode, der automatisk refresher
> en URL i en Iframe og samtidig laver en alert til brugeren såfremt
> indholdet af denne URL er ændret (læs: dokumentet er blevet længere
> )siden sidste refresh.

Det kan være svært/umuligt, afhængigt at browserens opsætning. Hvis
sider er på en anden server, så beskytter browseren måske mod "cross
site scripting", altså du får en "permission denied" når du prøver
at pille ved indholdet af framen.

"Blevet længere" er svært at tjekke (jeg ved ikke lige hvordan, med
mindre man måler det i pixels), men det kan være man kan se hvornår
siden sidst er opdateret. Det kræver selvfølgelig at siden ikke
er dynamisk genereret, så lastModified-egenskaben giver mening.
Ellers kunne man som sagt tjekke på document.body.offsetHeight
i stedet for document.lastModified.

Prøv følgende:
---
var egenskab;
var counter=0;

function init() {
egenskab=window.frames["ram1"].contentWindow.document.lastModified;
setInterval(update,2000);
}

function update() {
window.frames["ram1"].src =
"http://server.dk/side.html"+"?"+(counter++); // tvinger reload.
setTimeout(tjek,500); // vent til siden er loadet! Forøg 500 hvis ej nok
}

function tjek() {
var nyegenskab = window.frames["ram1"].contentWindow.document.lastModified;
if (egenskab != nyegenskab){
egenskab=nyegenskab;
alert("SIDEN ER ÆNDRET!");
}
}
---

Forklaring:
Funktionen "init" gemmer "lastModified"-egenskaben for dokumentet i framen.
Der SKAL være et dokument i framen når init kaldes.
Der startes en timer der opdaterer framen hvert andet sekund (2000
millisekunder).

Funkitonen "update" opdaterer iframen ved at ændre dets
location.href. Der tilføjes et tal efter urlen for at undgå at den
tages fra cachen (hvis du kan undgå caching, så kan tælleren
undværes).
Den venter så et halvt sekund (500 millisekunder) med at tjekke om
indholder er opdateret, for at give siden tid til at loade. Sæt
tiden op hvis serveren er langosm eller siden stor.

Funktionen "tjek" sammenligner det nye dokuments "lastModified" med
den gemte, og hvis de er forskellige, så laver den en alert (og
gemmer den nye værdi).

Det virker som sagt ikke i nyere browsere (i hvert fald ikke i IE6)
hvis iframens indhold er fra en anden server end hovedsidens, så
man kan kun bruge det til at holde øje med dine egne sider (eller
du kan bruge den til andres, hvis du piler i din egen IE's opsætning).


/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
'Faith without judgement merely degrades the spirit divine.'

Godkendelse af svar
Fra : aagesen


Dato : 08-01-03 13:38

Tak for svaret Lasse Reichstein Nielsen.
            
Jeg fik det til at virke ved at bruge dine ideer sammen med andre stumper kode fra nettet            

Du har følgende muligheder
Eftersom du ikke er logget ind i systemet, kan du ikke skrive et indlæg til dette spørgsmål.

Hvis du ikke allerede er registreret, kan du gratis blive medlem, ved at trykke på "Bliv medlem" ude i menuen.
Søg
Reklame
Statistik
Spørgsmål : 177416
Tips : 31962
Nyheder : 719565
Indlæg : 6407862
Brugere : 218876

Månedens bedste
Årets bedste
Sidste års bedste