Autor Zpráva
vacjos
Profil *
Zdravím,
Dala by se vytvořit jedna společná funkce na načítání stránky do zadaného iframu vyvolaná z libovolného iframu (stránky) celé struktury stránek? Funkce by byla definována v indexu(top window) a volala by se z jednotlivých stránek(iframů) např. přes window.top.open_page(url,nazev_iframe,param);. Param by obsahovalo pole (různý počet) názvů proměnných a jejich hodnot, které potřebuji současně na stránce indexu změnit - jsou to vždy globální proměnné této stránky.
Funkci v indexu open_page(url,nazev_iframe,param) by otvírala zadanou url v zadaném iframu přes zde_zápis_nevím_jak_udělat.nazev_iframe.location = url;}.
Potřebuji asi najít iframe se zadaným názvem ve struktuře webu, aniž bych musel přímo přesně zadávat jeho přesnou polohu. Všechny iframy mají unikátní názvy. Nevím, zda index nějak přímo ví o svých pod pod pod iframech, pokud ne, tak by je musel nějak vždy dohledávat? Někdy potřebuji změnit i vícero iframe najednou.

Příklad struktury:
index
- iframe1
-- iframe11 (iframe v iframu 1)
-- iframe12 (iframe v iframu 1)
--- iframe121
--- iframe122
- iframe2
-- iframe21
- iframe3

Ideální by byl přímo návrh funkce, případně jen idea vhodného řešení.
Děkuji
_es
Profil
vacjos:
Píšeš trochu zmäteno. Objekt window iframu podľa jeho názvu - atribútu name nájdeš jednoducho výrazom frames["názov"].
vacjos
Profil *
_es:
Píšeš trochu zmäteno. Objekt window iframu podľa jeho názvu - atribútu name nájdeš jednoducho výrazom frames["názov"].
To ano, takto mi to funguje: top.iframe1.iframe12.frames["iframe121"].location = url;. ale, takto ne: window.frames["iframe121"].location=url. Do funce open_page bych potřeboval posílat jen název cílového iframe a ne i jeho parenty. Je to takto srozumitelnější?
_es
Profil
Snáď by mohlo fungovať (netestované):
function najdiRam(kde, co){
  var ram = kde.frames[co], n = kde.frames.length;
  if(ram) return ram;
  if(n) for(var i=0; i<n; ++i) return najdiRam(kde.frames[i],co);
}
Použitie: najdiRam(top, "ram1") vráti objekt window rámu s názvom ram1 ak taký existuje niekde v celom okne.
Chamurappi
Profil
Reaguji na vacjose:
Z nějakého důvodu nemůžeš použít obyčejný window.open?
vacjos
Profil *
Udělaj jsem si to takto, co vy na to?

function open_page(iframe_url) {
  var idArray = [], n,
  search = function (iframes) {
    var n;
    for (n = 0; n < iframes.length; n++) {
      if (iframes[n].frames.length > 0) {search(iframes[n].frames);}
      idArray.push(iframes[n].frameElement.name);
      idArray.push(iframes[n].frameElement);
    }
  };
  search(window.top.frames);
  for (n = 0; n < idArray.length; n += 2) {
    for (i = 0; i < iframe_url.length; i += 2) {
      if (idArray[n] === iframe_url[i]) {idArray[n + 1].src = iframe_url[i + 1];}
    }
  }
}
open_page(['iframe123','http://jakpsatweb.cz','iframe3','http://jakpsatweb.cz']);



Chamurappi:
Z nějakého důvodu nemůžeš použít obyčejný window.open?
Už je to dávno, co jsem daný projekt započal a teď se k němu vracím. Myslím, že jsem od window.open přešel kvůli nefunkčnosti myslím v safari,webkit nebo tak nějak, nejsem si jistý, myslím, že s tím některé měly problémy.... a moc se nevyznám, jsem laik. Nebo se pletu?

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: