Javascriptová hádanka - vyřešeno

Na adresu Internet Exploreru už dnes z mých úst poněkolikáté přilétla smršť nelichotivých slov. Tvořím javascriptovou aplikaci, k jejímuž běhu potřebuji generovat IFramy a do nich načítat stránky. To vše javascriptem. Nepřekvapí vás, že žádný z prohlížečů nevzdoruje mé snaze takovou měrou jako právě Explorer.

Zvykl jsem si tolerovat a obcházet úlety tohoto obskurního prohlížeče ve věcí kaskádových stylů, poněvadž v drtivé většině případů existuje metoda, kterou se dá Exploreru hlava zdárně zamotat. Na co si však asi nezvyknu, je Exploreří zvláštní chování při manipulaci s javascriptem. Ne, implementace javascriptu v IE není zase tak špatná, ale výsledný obrázek poněkud kazí drobné chybičky a nesrovnalosti. Myslel jsem si, že i je dokázi obejít poměrně snadno, však v jedné jediné věci si už druhý den nevím rady a dokonce i všemocný Google tentokrát bezradně krčí rameny.

Klik, klik, klik…

Jaký je problém? Když do IFrame načtu javascriptem stránku, ozve se v Internet Exploreru tiché kliknutí – určitě jej znáte. Problémem je, že já těch IFramů generuji více – dva, pět, třeba i deset, a z jednoho kliknutí se vyklube zvuk, připomínající rej myší chycených do pastiček na laciný kousek sýra. Kulometná palba. Řehtačka v rukou nezodpovědného dítěte. Mám kód podobný tomuto:
IFrameObj = document.createElement('iframe');
bodyObj.appendChild(IFrameObj);
IFrameObj.src = 'data/page.html';

Najdete řešení?

Google mi vytrvale tvrdí, že řešení neexistuje. Pravděpodobně bych postupem času vynašel nějakou složitou obezličku, kterak potřebný dokument v IE vygenerovat dynamicky, ale do toho se mi pravda nechce a ani to nemám tak nevyhnutelně zapotřebí.

Ale přesto se obracím na vás – Čechoslováci jsou proslulí svojí vynalézavostí, tak se prosím pokuste najít řešení, jak snadno scriptem načíst do IFrame stránku tak, aby Explorer při jejím načtení „neškytl“. Děkuji vám!

Update – vyřešeno

Jako každý „neřešitelný“ problém, o kterém se nepíše, měl i tento velice jednoduché a programátorem trestuhodně přehlédnuté řešení. Jediná finta spočívala v prohození dvou řádků kódu – místo zařazení IFrame do stromu dokumentu a následného načtení stránky v něm stašilo udělat obojí opačně. Nejdřív nezařazenému IFrame (který existoval v paměti pouze jako abstrakt) přiřadit stránku a pak až jej i s načítanou stránkou zařadit do dokumentu. Výsledný kód:
IFrameObj = document.createElement('iframe');
IFrameObj.src = 'data/page.html';
bodyObj.appendChild(IFrameObj);

Tuto fintu jsem sic zkoušel a ukázala se chyby produkující, však od té chvíle jsem napsal mnoho důležitého kódu (který mimochodem ony chyby odstranil) a toto jediné logické řešení mne nenapadlo znovu vyzkoušet. Za trknutí děkuji h!ynkovi. Promiňte, že jsem vás obral o tolik času.

22. 5. 2006, 16.38 | Webdesign.


23 komentářů k “Javascriptová hádanka - vyřešeno”

  1. Arcao říká:
  2. :)))))

    zalezi, na co to potrebujes. Treba muzes pouzit i ajax s PHP/ASP/Python/Perl proxy (pokud nacitas nejake externi stranky) a pouzit techniky z thickboxu ( http://codylindley.com/…ule-them-all ).


  3. Dero říká:
  4. Arcao: Děkuji, ale opravdu potřebuji IFrame (jsem si tím naprosto jistý, tak mi věřte), až tu aplikaci představím, bude vše jasné. Umím si ve většině případů poradit celkem bez potíží, ale tohle je krize, která si žádá opravdu geniální nápad. :o)


  5. Hellish říká:
  6. Já bych před načtením těch iframů požádal uživatele IE (pomocí window.alert) aby si na pár vteřin vypnuli repráčky. Věřím, že uživatele tohoto prohlížeče už nemůže nic rozhodit, takže příkaz bez remcání splní ;oP


  7. Ivan říká:
  8. http://www.void.be/googletool.html – kopa ramov, ziadny zvuk mozno to plati aj na iframe


  9. Milan Kryl říká:
  10. Co vytvořit dynamicky stránku plnou iframů a tu potom otevřít v celém okně případně v jednom vytvořeném iframe?


  11. h!ynek říká:
  12. A co to zkusit obráceně, nejdříve src a pak appendChild? To nepomůže.

    IFrameObj = document.createElement('iframe');
    IFrameObj.src = 'data/page.html';
    bodyObj.appendChild(IFrameObj);

  13. Dero říká:
  14. Nevím, kdo jsi, h!ynku, ale zasloužíš metál. :o)

    Tohle je jedno z těch řešení, které jsem samozřejmě zkusil, ale z nějakého důvodu nebyla realizovatelná, IE stránku v IFrame nenačetl. Potom jsem přidal dost kódu, který hlídal konstrukci DOM v IFrame, a už jsem to řešení znovu nevyzkoušel. Až teď.

    Díky, snad vyřešeno. Nekliká – a je to samozřejmě logické! Doufám, že nenarazím ještě na nějaká další překvapení z této změny plynoucí.

    Tímto komentářem počínaje zahajuji diskusi na téma: „Proč se člověk podvědomě brání očividným řešením?“


  15. Derův zápisník » Archív » Javascriptová hádanka - vyřešeno říká:
  16. […] ony chyby odstranil) a toto jediné logické řešení mne nenapadlo znovu vyzkoušet. Za trknutí děkuji h!ynkovi. Promiňte, že jsem vás obral o tolik času. […]


  17. h!ynek říká:
  18. Doufám, že jsem ještě člověk ;) S javascriptem jsem si za posledního půl roku užil dost, takže tohle je pro běžný způsob zápisu (prvně všechny atributy a až pak vykreslit).


  19. dgx říká:
  20. To je skvělé. Neřešitelný úkol byl promptně vyřešen a jako čtenář jsem obohacen o krásný popis toho nežádoucího zvuku.

    Třeba za pár let to bude hit ;)


  21. Error414 říká:
  22. Ono to tak vetsinou je. Ze ten nejtezsi problem je prkotina, a prkotina u ktere si rikate ze nebude problem je orisek se slozitosti primo umernou puvodni myslene jednoduchosti.


  23. Shaman říká:
  24. Nedávno jsem řešil něco podobného, pokoušel jsem se generovat javascriptem vysouvatelné menu.To zase cvakalo při přejíždění jednotlivých položek, chvílemi jsem si připadal jako ve válce… Trápil jsem se s tím několik hodin a na nic jsem nepřišel, až když jsem ho ze šablony převedl na server, cvakat přestalo. Takže důvod nevím dodteď…


  25. Petr říká:
  26. osobně jsem toto řeši lnedávno u nějakého shopu a bohuel jsem to dělal obezličkama ;)díky za tip :)


  27. Leo říká:
  28. „Trápil jsem se s tím několik hodin a na nic jsem nepřišel, až když jsem ho ze šablony převedl na server, cvakat přestalo. Takže důvod nevím dodteď…“

    Menil jste v nem nejake obrazky? Leo


  29. Libor říká:
  30. Taky děkuju za vyřešení, může se to někdy hodit.


  31. dsdf říká:
  32. <h1>tiffanychina iphonewholesale fashion</h1>


  33. dsdf říká:
  34. <h1>buy shoesiphone 3gs wholesale无为人生</h1>


  35. sdf říká:
  36. wholesale MAC Mascara</br>sdf wholesale MAC Concealer</br> sdf wholesale MAC Eyeliner Gel</br> sds


  37. lady bags říká:
  38. what your lovely bags handbags lady bags golf bags


  39. abercrombie fitch říká:
  40. It's always nice when you can not only be informed, but also engaged! abercrombie and fitch


  41. tiffany uk říká:
  42. Well said, such a person should be a good sentenceedtiffany uk eyebrow with this as well you love di too


  43. UGG Nightfall Boots říká:
  44. UGG Nightfall Boot(UGG 5359)lets you become tremendously popular when you wear it. UGG boots sale are quite durable. Don't hesitate to Shop for 100% sheepskin Nightfall Ugg Boots now! 15.


  45. UGG Ultra Tall Boots říká:
  46. UGG Ultra Tall Boots are 100% premium wool fleece wicks moisture away. Ultra Tall UGG Boots very nice for the women. Give you cheap ugg boots wtih the Preferential policies!


Zanechte komentář





Můžete použít Texy! formátování.
Pokud se obsah boxů níže mění, zatímco píšete, potom žádné číslice nevyplňujte. V takovém případě antispam funguje, pouze se prohlížeči nepovedlo skrýt tento box.