T&R splet blog o spletnih storitvah. Razgaljamo tehnologijo!

reference spletnih strani
5th March

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):

JAVASCRIPT:
  1. parent.frames[IME_FREJMA].location.href = 'http://google.si';
  2. IME_FREJMA.location.href = 'http://google.si'; // hard-coded, možnost osvežitve strani z IME_FREJMA.location.reload()
  3. eval(IME_FREJMA).location.href = 'http://google.si'; // raje uporabite druge načine, eval je (pre)močna zadeva za sledečo stvar
  4. parent.frames[IME_FREJMA].location.reload(true); // sverde1 - povzroči popolno osvežitev (hvala sverde1)
  5. 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:

JAVASCRIPT:
  1. function getFrame(name) {
  2.   var frames = document.getElementsByTagName('frame');
  3.  
  4.   for (frameName in frames) {
  5.     if (frames[frameName].tagName == 'FRAME' && frames[frameName].name == name) {
  6.       return frames[frameName];
  7.     }
  8.   }
  9.  
  10.   return null;
  11. }

.... za for zanko si poglejte asociativne tabele v Javascriptu. Še koda za osvežitev frejma z poljubnim URL-jem:

JAVASCRIPT:
  1. function setFrameSrc(frameName, src) {
  2.   var frame = getFrame(frameName);
  3.  
  4.   if (frame !== null) {
  5.     parent.frames[frame.name].location.href = src;
  6.   }
  7. }

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:

Datoteke (primer kako deluje koda):

Deli s skupnostjo:

  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks

Podobni članki:

  1. Google Chrome Frame – rešitev za zastarele brskalnike – HTML5 rendering za IE
  2. Javascript – avtomatsko osveževanje strani – refresh page – reload page
  3. Javascript – document.getElementsByTagName
  4. Google AJAX Suggest kopija

5x komentirano na “Igranje s frejmi (frameset, frame)”

  1. Robi je napisal:

    Sej ne, da ma to kaj veze z napisanim, ampak S FREJMI, zaboga...

  2. Roky je napisal:

    Popravljeno, hvala.

  3. sverde1 je napisal:

    Osveževanje (ponovno nalaganje istega URL-ja) se da narediti tudi takole:
    location.reload(true);

  4. Roky je napisal:

    Sem dodal, hvala.

  5. Javascript - document.getElementsByTagName | .: TRSplet - internetne storitve .: je napisal:

    [...] Iščemo lahko po vseh (večini) HTML elementih frame, input, th, tr, td, table [...]

Dodaj komentar