/ Forside / Teknologi / Udvikling / Java Scripts / Nyhedsindlæg
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 al~
Fra : aagesen


Dato : 08-01-03 09:25

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_ifra
me);</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_ifra
me);</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">

--
Leveret af:
http://www.kandu.dk/
"Vejen til en hurtig løsning"


 
 
Lasse Reichstein Nie~ (08-01-2003)
Kommentar
Fra : Lasse Reichstein Nie~


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.'

Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408847
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste