Igranje s frejmi (frameset, frame)
Po vprašanju sotrpina (Mežik:P) na faksu kako ob osvežitvi X frejma osvežiti tudi drugi (in tretji itd ...) frejm, sem se malce poigral in naredil pregled vseh obstoječih frejmov in možnost osvežitve določenega frejma z URL naslovom. Zabavno aneda:P.
Ah seveda, odgovor na vprašanje kako osvežiti X frame je (načinov je veliko, tukaj je le nekaj izmed njih):
-
parent.frames[IME_FREJMA].location.href = 'http://google.si';
-
IME_FREJMA.location.href = 'http://google.si'; // hard-coded, možnost osvežitve strani z IME_FREJMA.location.reload()
-
eval(IME_FREJMA).location.href = 'http://google.si'; // raje uporabite druge načine, eval je (pre)močna zadeva za sledečo stvar
-
parent.frames[IME_FREJMA].location.reload(true); // sverde1 - povzroči popolno osvežitev (hvala sverde1)
-
parent.frames[IME_FREJMA].location.reload(); // povzroči osvežitev iz začasno shrajenjih datotek (cache)
Jaz sem pri mojem primeru uporabil prvo možnost. Zadeva je taka, da sem najprej seznam (select HTML element) napolnil z vsemi frejmi, ki so trenutno na strani. Označenemu frejmu v seznamu pa potem določil poljubno stran. Koda za iskanje frejmov:
-
function getFrame(name) {
-
var frames = document.getElementsByTagName('frame');
-
-
for (frameName in frames) {
-
if (frames[frameName].tagName == 'FRAME' && frames[frameName].name == name) {
-
return frames[frameName];
-
}
-
}
-
-
return null;
-
}
.... za for zanko si poglejte asociativne tabele v Javascriptu. Še koda za osvežitev frejma z poljubnim URL-jem:
-
function setFrameSrc(frameName, src) {
-
var frame = getFrame(frameName);
-
-
if (frame !== null) {
-
parent.frames[frame.name].location.href = src;
-
}
-
}
Zadevo sem testiral v Firefox 2, IE 7.0, IE 6.0, IE 5.5, Opera (dvakrat doda iste), Safari in povsod lepo deluje RAZEN Safari, ki se upira:P
Več informacij:
- Preprečitev, da nekdo NE uporabi tvojo stran kot frejm
- Odstranitev poljubnega frejma
- Nekaj trikov s frejmi
- Osnove kako dostopati do posameznih frejmov
- Eval je močna zadeva
Datoteke (primer kako deluje koda):
Podobni članki:



March 5th, 2008 ob 7:36 am
Sej ne, da ma to kaj veze z napisanim, ampak S FREJMI, zaboga...
March 5th, 2008 ob 10:04 am
Popravljeno, hvala.
March 7th, 2008 ob 5:59 pm
Osveževanje (ponovno nalaganje istega URL-ja) se da narediti tudi takole:
location.reload(true);
March 7th, 2008 ob 6:51 pm
Sem dodal, hvala.
May 7th, 2008 ob 12:01 am
[...] Iščemo lahko po vseh (večini) HTML elementih frame, input, th, tr, td, table [...]