Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проблема с кроссбраузерностью (https://javascript.ru/forum/misc/8040-problema-s-krossbrauzernostyu.html)

Стас 04.03.2010 13:56

Проблема с кроссбраузерностью
 
Приведенный код работает только в IE:

<!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">
<table><tr><td><div id="YMapsID"></div></td></tr></table>
<script src="http://api-maps.yandex.ru/1.1/index.xml?key=AFkiiksBAAAAIznEFQIAVM19HKCnRqtCI85M cVs-FTzGHb0AAAAAAAAAAAAvqf3H1UCTxAgkMVWWwn5O1w0_kQ=="
type="text/javascript"></script>
<script type="text/javascript">
var mapblock=document.getElementById("YMapsID");
mapp = new YMaps.Map(mapblock);
value = 'Москва, Петровка, 38';
var geocoder = new YMaps.Geocoder(value, {results: 1, boundedBy: mapp.getBounds()});
YMaps.Events.observe(geocoder, geocoder.Events.Load, function () {
if (this.length()) {
alert (value);
geoResult = this.get(0);
mapp.addOverlay(geoResult);
mapp.setBounds(geoResult.getBounds());
mapblock.style.height=525;
mapblock.style.width=700;
mapblock.style.display='block';
}
});
</script>

Уже всю голову поломал, в чем причина - не могу понять.
Помогите пожалуйста разобраться.

hevil 05.03.2010 11:03

При задании ширины и высоты допишите единицы измерения, например, "px". А также вызов метода setBounds() необходимо вынести после задания размеров контейнера карты, иначе получим "серую карту".
mapblock.style.height = "525px";
mapblock.style.width = "700px";
mapblock.style.display = "block";
mapp.setBounds(geoResult.getBounds());


Я бы советовал создавать карту после загрузки документа и использовать встроенный в API фреймворк jQuery:
YMaps.jQuery(function () {
    var mapblock = YMaps.jQuery("#YMapsID"),
        mapp = new YMaps.Map(mapblock[0]);

    var value = 'Москва, Петровка, 38',
        geocoder = new YMaps.Geocoder(value, {results: 1, boundedBy: mapp.getBounds()});

    YMaps.Events.observe(geocoder, geocoder.Events.Load, function () {
        if (this.length()) {
            var geoResult = this.get(0);
            mapp.addOverlay(geoResult);

            mapblock.css({
                width : 525,
                height : 700,
                display : "block"
            });

            mapp.setBounds(geoResult.getBounds());
        }
    });
});


По API Яндекс.Карт вопросы лучше задавать в Клуб разработчиков. Там быстрее ответят.

Стас 06.03.2010 02:36

Спасибо!!!


Часовой пояс GMT +3, время: 03:35.