Autor | Zpráva | ||
---|---|---|---|
vacjos Profil * |
#1 · Zasláno: 18. 1. 2014, 10:47:22
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 |
#2 · Zasláno: 18. 1. 2014, 11:09:04
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 * |
#3 · Zasláno: 18. 1. 2014, 11:53:30
_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 |
#4 · Zasláno: 18. 1. 2014, 22:15:04
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); } najdiRam(top, "ram1") vráti objekt window rámu s názvom ram1 ak taký existuje niekde v celom okne.
|
||
Chamurappi Profil |
#5 · Zasláno: 18. 1. 2014, 22:23:41
Reaguji na vacjose:
Z nějakého důvodu nemůžeš použít obyčejný window.open ?
|
||
vacjos Profil * |
#6 · Zasláno: 18. 1. 2014, 22:35:11 · Upravil/a: vacjos
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? |
||
Časová prodleva: 10 let
|
0