ugrás a tartalomhoz

IE7 te csodálatos...

s_volenszki · 2008. Már. 21. (P), 19.45
Szisztok!

Felrobbantam! Az IE 7 ma teljesen kikészített! Egyik ismerősőm kislányára hasonlít. Mikor megkérdezem től, milyen csokit kér, lila tehenest, vagy nyuszisat, erre Ő azt felelei: NEM!

Olvastam itt a laboron egy okos dolgot gmap-val kapcsolatban és úgy döntöttem, hogy a sávszélesség megtakarítása érdekében én is átszerkesztem a térképeimet úgy, hogy látszódjon a statikus és egy rákattintás után töltődjenek csak az élesek.

Minden tök jó, már csak ott tartok, hogy ki kellene venni a keretből a statikus térkép képet, miután betöltődik a navigálható.

Egy kis áttekintés:

1. Egy divbe betöltődik a statikus térkép képe.
2. Ha rákattintanak, a div innerHTML-ébe kicserélem a statikus képet arra az iframe-re amelyik tartalmazza a térképet (atért iframe mert).
3. Betöltődik a térkép és kiszol parentnek, hogy ready.

A probléma ott kezdődött, hogy az IE7, az egyből betolja a frame fehér hátterét, míg minden valamire való böngésző (FFX, Opera, Safari, Netscape), csak akkor kezd el megjeleníteni, ha már van tartalma annak a frame-nek.

Na, sebaj, gondoltam, adtam a konténernek fix magasságot és overflow hiddent, aztán a frame appendel került be a statikus térkép képe alá. Így folyamatosan látja user a statikus képet, aztán mikor a térkép kész és szól parent-nek, hogy ready, akkor gondoltam removeChild-dal kiveszem a statikus képet!

Szerintetek? Az IE7 bazár(!) és hibaüzit akar küldeni apucinak!

Na gondoltam ha nem kallett a lila tehenes, jöhet a nyuszis (mármint a csoki):

Amikor ready a térkép, a statikus képnek adok 0px magasságot, aminek következtében felcsúszík a frame a konténer tetejébe.

Na szernitetek IE7-nek mennyi a 0px? Mert szemre kb. 20!

Eddíg paddingoltam, marginoztam, olvastam néhány topicot yahoo-n és gugli-n talált fórumokon majd úgy döntöttem, ciki ide vagy oda, de kérek egy kis segítséget!

Merre induljak?

s_volenszki
 
1

Kód?

janoszen · 2008. Már. 21. (P), 19.58
Hmmm... érdekes, bár a hozzászólásodban több az indulat mint az informatív szöveg. Mi lenne, ha segítenél egy kis kóddal? Vagy linkkel?
2

Tehát

s_volenszki · 2008. Már. 21. (P), 21.26
Van egyszer a map.html, ami a navigálható gmap-ot tartalmazza:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  2. <html>  
  3.     <head>  
  4.     <title></title>  
  5.     <meta http-equiv="content-type" content="TEXT/HTML;CHARSET=ISO-8859-2" />  
  6.     <meta http-equiv="content-language" content="hu" />  
  7.     <style type="text/css">  
  8.         body {  
  9.             margin: 0px;  
  10.         }  
  11.     </style>  
  12.     <script src="http://maps.google.com/maps?ide jonnek a terkep parameterek" type="text/javascript"></script>  
  13.     <script type="text/javascript">  
  14.         //<![CDATA[ 
  15.         function load(){ 
  16.             if(GBrowserIsCompatible()) 
  17.             { 
  18.                 var map = new GMap2(document.getElementById('map')); 
  19.                 map.setCenter(new GLatLng(00.000000, 00.000000), 00); 
  20.                 var point = new GLatLng(00.000000, 00.000000); 
  21.                 map.addOverlay(new GMarker(point)); 
  22.                 map.addControl(new GSmallMapControl()); 
  23.                 if(parent){parent.mapCleanUp();} 
  24.             } 
  25.         } 
  26.         //]]>  
  27.     </script>  
  28.     </head>  
  29. <body onload="load()" onunload="GUnload()">  
  30.     <div id="map" style="width:500px;height:320px"></div>  
  31. </body>  
  32. </html>  
Látható benne a parent funkcióhívás, amikor a térkép készen van.
Aztán következik az a fájl, ami használja a térképet (usemap.html). Szintén jól látható a funkció, ami a keretből van indítva mikor kész a térkép:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  2. <html>  
  3.     <head>  
  4.     <title></title>  
  5.     <meta http-equiv="content-type" content="TEXT/HTML;CHARSET=ISO-8859-2" />  
  6.     <meta http-equiv="content-language" content="hu" />  
  7.     <script type="text/javascript">  
  8.         //<![CDATA[ 
  9.         function preloadMap(){ 
  10.             M = document.getElementById('blind_map'); 
  11.             M.innerHTML = M.innerHTML + '<iframe width="500" height="320" frameborder="0" scrolling="no" src="map.html"></iframe>'; 
  12.         } 
  13.         function mapCleanUp(){ 
  14.             document.getElementById('blind_map').removeChild(document.getElementById('blind_map').childNodes[1]); 
  15.         } 
  16.         //]]>  
  17.     </script>  
  18.     </head>  
  19. <body>  
  20.     <div id="blind_map" style="width:500px;height:320px;margin-left:auto;margin-right:auto;border:1px solid #000000;overflow:hidden;">  
  21.         <a href="javascript:void(0);" onclick="preloadMap();" style="height:0px;">  
  22.             <img src="http://maps.google.com/staticmap?ide jonnek a terkep beallitasai" border="0">  
  23.         </a>  
  24.     </div>  
  25. </body>  
  26. </html>  
Ennyi az egész! Amikor betöltődik a térkép, FFx, Safari, Netscape, Opera gond nélkül kiveszi a képet, IE7 meg elhasal. Probáltam még ezt (természetesen a képnek akkor van id-je is):
  1. function mapCleanUp(){  
  2.     document.getElementById('blindmap').style.height = '0px';  
  3. }  
Csak IE7-ben a kép a 0px magasság ellenére kb 15-20px magas marad. Megtaláltam az egyik Win98 appliance-omat és megnéztem IE6-tal. A removeChild ott sem működik, bár nem dob hátast, és a kép 0px magasság után szintén 15-20px magas.

Szinte biztos hogy valami nem Xbrowser a removeChild-os kódomban, nem vitatom, az indulat csak annyi volt, hogy meglepődtem azon, hogyan tud a js a saját kis "játszóteréből" oprendszer alkalmazás szintű hibát okozni.

s_volenszki
3

Fától az erdőt!

s_volenszki · 2008. Már. 21. (P), 23.09
Na, az egyik megoldás azért csak megszületett!

A removeChild-dal nem mentem semmire, viszont kiderült, hogy nem a 0px magas kép okozta a hibát IE6-7-ben, hanem egyszerűen nem komálták konténeren belül a Komodo tab-os intend-jeit!

s_volenszki
4

Ilyenkor általában azt is hasznos volna közölni, hogy milyen

Fraki · 2008. Már. 21. (P), 23.51
Ilyenkor általában azt is hasznos volna közölni, hogy milyen kulcsszavakra kerestél rá.

Egyébként "IE whitespace bug" -ra nem találsz releváns anyagot? Csak kíváncsi vagyok.
5

Abszolult mellé fogtam.

s_volenszki · 2008. Már. 22. (Szo), 00.10
Alapvetően a removeChild által generelát hiba volt, ami miatt más megoldás után kutakodtam. Amiker kerestem az az IE+removeChild volt, hiszen azt akaram megvalósítani.

Menet közben beugortt egy gondolat, hogy mi lenne ha nem kivenném a képet, csak a magasságát 0px-re állítanám. Na ekkor maradt nemkívánt térköz a frame és a konténer teteje között.

Ez a nemkívánt térköz volt a Komodo Edit tab-os intend-je, amit IE-n kívül minden böngésző lenyel.

s_volenszki

szerk:

Attól függetlenül ha van rá időtök nézzétek már meg, nektek is behasal az IE7 a removeChild-től?
6

Közvetlenül nem használom a removeChild()-ot, de...

Fraki · 2008. Már. 22. (Szo), 02.55
Közvetlenül nem használom a removeChild()-ot, de prototype-ban a remove()-ot igen, és azt pedig ennyi:
  1. remove: function(element) {  
  2.   element = $(element);  
  3.   element.parentNode.removeChild(element);  
  4.   return element;  
  5. },  
Viszont whitespace-bugból van néhány.