Autor | Zpráva | ||
---|---|---|---|
peta Profil |
#1 · Zasláno: 17. 8. 2012, 10:28:48
Hraju si trosku s objecty a iframe vypisovanymi pomoci js. Narazil jsem na takovou neprijemnou vec pri prepnuti IE9 na rezim IE7. Kdyz vykreslim do stranky pomoci innerHTML object a v nem spustim script pro zobrazeni window.location, tak iframe zobrazi spravne src framu, object zobrazi chybne adresu hlavni stranky.
Kod hlavni stranky; <div class="banner_wz_js"> </div><!--//banner_wz--> <div class="nav_path_js"> </div><!--//nav_pathbar--> <div class="nav_main_js"> </div><!--//nav_main--> <script> function writeObject(id,str) { document.getElementById(id).innerHTML = str; } writeObject('nav_path_js', '<iframe name="navpath" src="'+home+'site_map.htm?run=navpath&url='+urlEncode(url)+'"></iframe>'); writeObject('nav_main_js' ,'<iframe name="navmain" src="'+home+'site_map.htm?run=navmain&url='+urlEncode(url)+'"></iframe>'); writeObject('site_footer_js','<iframe name="sitefooter" src="'+home+'site_footer.htm" ></iframe>'); // writeObject('nav_path_js' ,'<object name="navpath" data="'+home+'site_map.htm?run=navpath&url='+urlEncode(url)+'" ></object>'); // writeObject('nav_main_js' ,'<object name="navmain" data="'+home+'site_map.htm?run=navmain&url='+urlEncode(url)+'" ></object>'); // writeObject('site_footer_js','<object name="sitefooter" data="'+home+'site_footer.htm" ></object>'); </script> [pre] script v kazde strance: [pre]<script>alert(window.location.href)</script> Problem nastava v okamziku, kdy chci uvnitr objektu nacist get parametry "run" a "url". Da se to nejak obejit, precist si skutecnou adresu objektu? Pro iframe mi alert na kazde strance vypise: http://localhost/p35/index.htm http://localhost/p35/site_map.htm?run=navpath&url=http://localhost/p35/index.htm http://localhost/p35/site_map.htm?run=navmain&url=http://localhost/p35/index.htm http://localhost/p35/site_footer.htm http://localhost/p35/index.htm http://localhost/p35/index.htm http://localhost/p35/index.htm http://localhost/p35/index.htm |
||
_es Profil |
peta:
„precist si skutecnou adresu objektu?“ No a prečo nečítaš normálne objekt.data ? Alebo možno stačí výraz zmeniť na location.href alebo this.location.href .
|
||
peta Profil |
#3 · Zasláno: 17. 8. 2012, 11:09:18
Aha. Vysvetlim.
Program dela to, ze do stranky nacte objekty (nebo iframe). Ty objekty pak rsi drobeckovou navigaci, hlavni navigaci, paticku. Cili, neco jako include v php. Jenze, kdyz chci zjistit pathbar, potrebuji mit k tomu adresu z hlavni stranky. Coz by nebyl v obou pripadech problem. Ale, kdyz chci mit jeden script.js, potrebuji vedet, ze se prave nachazim v objektu navpath a ne navmain. Takze do data predavam nazev objektu a url adresu hlavni stranky. A problem je, ze cely ten script krasne funguje ve FF, IE8, IE9, ale ne IE7. V IE7 se to chova tak, ze mi script spusteny uvnitr kazde stranky vrati shodnou adresu. Jak ted tedy zjistim, ve kterem objektu jsem? A druhy problem je, ze kdyz objekt prepisi na iframe, tak se to chova spravne i v IE7. Jenze jsem si rikal, kdyz vsichni tolik iframe jen kritizuji, ze to prepisi na univerzalnejsi object. Ps. Nej legrace je pak, kdyz to spoustim pres file:/// v IE7. To mi pak vyskakuji cyklicky hlasky o povoleni JS do nekonecna. Mozna to s tim nejak souvisi. Vlastne urcite, protoze tam mam podminku, ze kdyz nenajde ty 2 parametry, tak ma do stranky vepsat ty objekty. Takze to do navigace napise opet navigaci.... To spravim. |
||
Chamurappi Profil |
#4 · Zasláno: 17. 8. 2012, 11:20:26
Reaguji na peta:
Je to zajímavý poznatek, ale asi zbytečný a nepříliš využitelný. Proč by někdo měl používat <object> místo rámce?
|
||
_es Profil |
#5 · Zasláno: 17. 8. 2012, 11:21:34
peta:
„kdyz vsichni tolik iframe jen kritizuji, ze to prepisi na univerzalnejsi object.“ Univerzálnejší v čom? Hentaká náhrada iframe bude v prehliadačoch asi menej podporovaná a aj tam bude asi viacej problémov. Zmena výrazu nepomohla?
|
||
peta Profil |
_es: this.location - nepomohlo
Mno, na objektu jdou vyvolavat ruzne akce, ktere se nad iframem nedaji. a tez stylovani tagu je jednodussi, kdyz nemusis odbouravat ruzne ramecky pro IE ne zrovna validnim kodem. Ale pro muj pokus to nema vyznam. Kdyz na nic neprijdu, dam tam ramy. |
||
Chamurappi Profil |
#7 · Zasláno: 17. 8. 2012, 11:39:32
Reaguji na peta:
„na objektu jdou vyvolavat ruzne akce, ktere se nad iframem nedaji“ Nějaký příklad? Mně přijde, že rámce mají mnohem propracovanější API (mají contentWindow , vnitřní stránka vidí window.frameElement ).
„kdyz nemusis odbouravat ruzne ramecky pro IE ne zrovna validnim kodem“ Je to jeden rámeček, vypíná se frameborder em a i kdyby to validní nebylo, co na tom záleží…
|
||
peta Profil |
Mam to, mocny strejda google :)
url = self.location.href A kdyz poklikas na x a pak odkaz yyy, tak se nahore zmeni navigace. A vsechno je to zalozene na souboru site_map. Na volny.cz totiz nemam php a vzhledem problemum s navigaci na jinem webu, kde sice php jede, ale neresil jsem to, jsem se rozhodl zkusit prave toto. Chamurappi: Mno, objekty se chovaji podobne jako ajaxove scripty. Ovladani je pak spolecne. Iframy to maji pojmenovane vsechno jinak. Ano, iframy jsou propracovanejsi a v tomhle spolehlivejsi v ruznych prohlizecich. Ale, to bych nebyl ja, abych nezkusil tehoz docilit jinym zpusobem. Rozsirit obzory tam, kde to zkusil zatim malokdo. |
||
Časová prodleva: 12 let
|
0