Autor Zpráva
Milkys
Profil
Zdravím všechny dobré duše,
prosím o pomoc, určitě je chyba někde mezi mojí židlí a pc. Ve FF, IE 9 se mapa v novém okně otevře, ale třeba v v IE 7, 8 a Opera 11.50 je "vybíleno". V IE 7 se mi debugbar vyjádřil:
Chybové hlášení: Nelze načíst hodnotu vlastnosti firstChild: Objekt má hodnotu Null nebo není definován.
URL: http://maps.gstatic.com/intl/cs_ALL/mapfiles/400d/maps2.api/main.js
Co tam prosím Vás mám špatně, javascriptu moc nerozumím. Děkuji za reakce a přeji dobrou chuť k obědu.
Níže přikládám kod.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs-cz" lang="cs-cz" >
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>Mapa</title>
<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=false&amp;key=muj-klic" type="text/javascript"></script>
</head>
<body>
<script type="text/javascript">/*<![CDATA[*/
function Mapka() {
var mesto = "Praha";
var lat = 50.1213861;
var lng = 14.5436081;
myWindow=window.open('','','width=480px,height=480px');
myWindow.document.write('<div style="width:450px;height:450px" id="detail-mapicka"></div><script src="http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=false&amp;key=muj-klic" type="text/javascript"><\/script><script language="JavaScript"> window.onload=function() { var gpsLatitude = '+lat+'; var gpsLongitude = '+lng+'; if (GBrowserIsCompatible()) { var map = new GMap2(document.getElementById("detail-mapicka")); var point = new GLatLng(gpsLatitude, gpsLongitude); var marker = new GMarker(point); GEvent.addListener(marker, "click", function() { var infoBox = "<strong>"+mesto+"</strong><br />"; map.openInfoWindowHtml(point, infoBox); }); map.setCenter(point, 14); map.setUIToDefault(); map.addOverlay(marker); } else { alert("Promiňte, ale Váš prohlížeč nepodporuje javascript"); } } <\/script><div class="clear"></div>');
myWindow.document.close();
}
/*]]>*/</script>

<ul id="flowtabs">
<li><a href="#mapa" onclick="Mapka();">Mapa</a></li>
</ul>
</body>
</html>
Chamurappi
Profil
Reaguji na Milkyse:
V okně, které otevíráš a do kterého vypisuješ skript, není přilinkovaný JavaScript od Google Maps.
Milkys
Profil
Chamurappi:
i když tam je vypíše to podobnou hlášku o Gmap2, že není definovaná nebo co, proto jsem jej vložil do <head>u. Už jsem tuto variantu také zkoušel.
peta
Profil
Milkys:
To neni javascriptovy kod, ale smes s PHP, tudiz to nemuzu vyzkouset a tudiz nema smysl hledat v nem chybu, pokud nechci stravit cas vymyslenim, jakou hodnotu na dane misto asi dosadit. Posli link na stranku nebo javascriptovy kod, ktery je mozne vlozit do cisteho souboru a otestovat.

Pokud ti v php funguji zkracene zapisy, tak ti budou fungovat i tyto, nejspis:
<? echo($title); ?>
<? echo $title; ?>
<?=$title?>
Ja pouzivam radeji uplny zapis
<?php echo $title; ?>

Chybové hlášení: Nelze načíst hodnotu vlastnosti firstChild: Objekt má hodnotu Null nebo není definován.
URL: http://maps.gstatic.com/intl/cs_ALL/mapfiles/400d/maps2.api/main.js

Ona muze byt chyba i v te knihovne. ikdyz je to u google nepravdepodobne, ze by neudelal kompatibilni s IE. Zkus googlem najit jiny priklad s danou knihovnou, zda funguje.
Tam ti to jiste pise cislo radku. Tak, nekde do toho radku pred firstChild si dej alert a zjisti si, u jakeho elementu se snazi to firstChild najit.

není přilinkovaný JavaScript od Google Maps (Chamurappi)
Nepsal ti to uz jednou? Opravil jsi to? Opraveny kod nevidim. Do document.write nemas zahrnuty tag script, ktery tam pridava google map javascript.
Milkys
Profil
peta:
opravil jsem to tak, aby proměnné byly každému jasné a mohl to testnout a eventuálně poradit.
PS. S php tam problémy nemám.
_es
Profil
Milkys:
Dokument v otváranom okne by mal byť po použití metódy write uzavretý metódou close, teda treba doplniť príkaz myWindow.document.close().
Milkys
Profil
_es:
děkuji za radu, doplněno, ale chyba je pořád stejná.
myWindow.document.close() jsem snad vložil na správné místo. Viz 1. příspěvek.

Chybové hlášení: Nelze načíst hodnotu vlastnosti firstChild: Objekt má hodnotu Null nebo není definován.
URL: http://maps.gstatic.com/intl/cs_ALL/mapfiles/400d/maps2.api/main.js


peta:
tak jsem se na ten řádek v http://maps.gstatic.com/intl/cs_ALL/mapfiles/400d/maps2.api/main.js díval, ale toto je už na mě silný kafe. Prosím Tě kam ten alert mám vložit? Já bych to chápal jako vyalertovat proměnnou b.
ř. č. 458:
function Bf(a){for(var b;b=a.firstChild;)zg(b),a.removeChild(b)}
_es
Profil
Milkys:
Vyskúšaj dať vlastný JS kód (textový reťazec predávaný do document.write) do nejakej funkcie a po zavolaní metódy document.close ju zavolaj myWindow.funkcia() (z pôvodného okna).
Milkys
Profil
_es:
vyzkoušel jsem a to mi funguje ve všech prohlížečích, ale s mapou to nemá nic společného:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs-cz" lang="cs-cz" >
  <head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <title>Mapa</title>
  </head>
  <body>
<script type="text/javascript">/*<![CDATA[*/ 
function Funkce() { 
myWindow=window.open('','','width=480px,height=480px');
myWindow.document.write('<p>raz dva tři</p>');
myWindow.document.close();}/*]]>*/</script> 
 
<ul id="flowtabs">
    <li><a href="#mapa" onclick="Funkce();">Mapa</a></li>
</ul>
  </body>
</html>
_es
Profil
Milkys:
vyzkoušel jsem
Čo si vyskúšal? Myslel som:
okno.write(HTML kód s JS skriptom s funkciou f);
okno.close();
okno.f()
No možno bude lepšie dať do otvoreného okna taký kód, aby sa vykonal až pri jeho udalosti window.onload.
Milkys
Profil
_es:
tak už skoro 3 hodiny mudruju nad tím window.onload, js neznám proto s ním nerad pracuji, ale tady se to obejít nedá. Ve vší úctě k tobě _es domnívám se, že si asi nepochopil můj problém. Kodu asi nic není, když se správně zobrazuje ve výše uvedených prohlížečích jen je to potřeba doladit i pro pár verzí prohlížečů, které hold ještě někteří používají.

Mám v odkazu v menu onclick="Mapka() proto, aby se js načetlo a provedlo až po kliknutí na tento odkaz. Ostatně, když js na google co je nyní v head, do head vůbec nedám a nechám jej jen ve funkci tak se ta funkce včetně vloženého js načte až po kliknutí a nezdržuje prvopočáteční načítání stránky. Tak je to funkční, ale ne v IE 7 a 8 a v tom je ten problém.

Nebo nerozumím já tobě... Prosím o trpělivost se mnou...
_es
Profil
Milkys:
Myslel som vyskúšať namiesto časti textového reťazca <script>kód<\/script> predaného do metódy write ho zameniť za <script>window.onload=function(){kód}<\/script>.
Milkys
Profil
_es:
Nechápu. To jako....nevím, uvidím, něco o tom počtu vyzkouším to co si myslím a ozvu se. Děkuji za podporu a trpělivost.
_es
Profil
Milkys:
Nechápu.
Kód“ v [#12] je kód v [#1] var gpsLatitude =... až po <\/script>.
Milkys
Profil
_es:

tak asi to bude dobrý. Už "blbne" jen IE 8.

IE 8: po zavření 1 chyby se mapa vůbec nezobrazí
V IE testeru to napíše:
Chyba skriptu: Je požadován objekt

Současný kod je vložen v příspěvku [#1].
_es
Profil
Milkys:
Pomohla by, už od začiatku, „živá“ ukážka, takto to je len tipovanie možných príčin problémov.
Milkys
Profil
Ukázku jsem tu měl, ale nikdo se neozval, asi neřešitelné. Přesto děkuji za rady. Dám tam statickou mapu.
editováno: 13:45:21 20.10.2012
peta
Profil
Milkys:
"Ukázku jsem tu měl" - O tom nic nevim. Ziva ukazka je html kod, na ktery, kdyz kliknu, tak jede. Muzes vyuzit odkaz viz es, „Nevím, kam to nahrát.“, jsFiddle.

"Současný kod je vložen v příspěvku [#1]. "
Sim te, tohle nedelej. Posledni kod napis do posledniho prispevku. Do prvniho muzes taky, ale pak reakce na prvni prispevek neodpovidaji jeho obsahu a kazdy, kdo bude resit podobny problem a bude to cist od zacataku, nepochopi reakce.

#9 Dival jsi se, jak se pise windows open nebo falesny odkaz pomoci google v prikladech na webu? Jsem to opravil, prepnul ie9 na rezim ie8, povolil aktivni obsah (zluta hlaska) a bez problemu mi to funguje.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs-cz" lang="cs-cz" >  
  <head>  
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>  
    <title>Mapa
    </title>  
  </head>  
  <body>
<script type="text/javascript">
function Funkce() { 
win = window.open('','','width=480px,height=480px');
doc = win.document;
doc.open();
doc.write('<p>raz dva tři</p>');
doc.close();}</script>    
    <ul id="flowtabs">    
      <li>
      <a href="#mapa" onclick="Funkce(); return false;">Mapa</a>
      </li>
    </ul>  
  </body>
</html>

#1 To mi po oprave chyb take funguje v rezimu IE8 v IE9
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs-cz" lang="cs-cz" >
  <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
    <title>Mapa
    </title>
<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=false&amp;key=muj-klic" type="text/javascript"></script>
  </head>
  <body>
<script type="text/javascript">
function Mapka() {
var mesto = "Praha";
var lat = 50.1213861;
var lng = 14.5436081;
win = window.open('','','width=480px,height=480px');
doc = win.document;
doc.open();
doc.write('<div style="width:450px;height:450px" id="detail-mapicka"></div><script src="http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=false&amp;key=muj-klic" type="text/javascript"><\/script><script language="JavaScript"> window.onload=function() { var gpsLatitude = '+lat+'; var gpsLongitude = '+lng+'; if (GBrowserIsCompatible()) { var map = new GMap2(document.getElementById("detail-mapicka")); var point = new GLatLng(gpsLatitude, gpsLongitude); var marker = new GMarker(point); GEvent.addListener(marker, "click", function() { var infoBox = "<strong>"+mesto+"</strong><br />"; map.openInfoWindowHtml(point, infoBox); }); map.setCenter(point, 14); map.setUIToDefault(); map.addOverlay(marker); } else { alert("Promiňte, ale Váš prohlížeč nepodporuje javascript"); } } <\/script><div class="clear"></div>');
doc.close();
}
</script>  
    <ul id="flowtabs">
      <li>
      <a href="#mapa" onclick="Mapka(); return false;">Mapa</a>
      </li>
    </ul>
  </body>
</html>
A odstraneni toho paskvilu ccdata.

Mimochodem, pres window.open muzes otevirat html stranku. Nemusis to generovat vsechno pomoci javascriptu.

Ps. Predstav si, ze bych tyhle kody pripsal jen do sve prvni reakce? Mozna by sis ani nevsiml, ze jsem tam uvedl odkaz na kod. Vzapeti by mne za to zdrbali admini, protoze to narusuje posloupnost prispevku.

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:

0