Jquery $ (window) .load () не работает в Chrome, Opera и Safari. - PullRequest
0 голосов
/ 01 декабря 2011

Я хотел бы объяснить мою ситуацию.

Я пишу веб-сайт, и одна из веб-страниц использует карту Google.

Веб-сайт cms и использует ektron

Итак, я должен использовать ektron google map, потому что он предоставляет некоторые функции, которые хотят клиенты.

Ektron просто использует google map и использует ajax для объединения со своей собственной логикой.

Я не знаю деталей, но всякий раз, когда я пытался изменить свойства этого ektron map, мне нужно нажимать search или zoom in или zoom out или перемещать карту.

Только после того, как я это сделаю, измененные свойства вступят в силу. Если нет, то нет.

Итак, я думаю о ярлыке и программно нажимаю кнопку search на ektron map.

Опять же, я программно добавляю элемент управления к panel.

Я не могу написать document.ready Потому что я обнаружил, что работает до загрузки карты.

Итак, я написал этот код, чтобы карта работала.

<script type="text/javascript">
    $(window).load(function () {
        $("#__GetAddr").click();
    });
</script>

Это работает. __GetAddr - это идентификатор кнопки поиска, и я щелкаю его после загрузки.

Но проблема началась, когда я использую его с хромом.

Я обнаружил, что $(window).load() не работает в Chrome, Safari и Opera.

Я некоторое время гуглял, но не могу найти какого-либо убедительного ответа.

Есть ли какой-нибудь четкий альтернативный способ для этого работать в этих 3 браузерах, пока он все еще работает для IE7,8,9 и Firefox.

Большое спасибо.

Привет всем, у меня есть решение.

Думаю, это лучшее решение. но это работает.

<script type="text/javascript">
    if (navigator.appName == "Microsoft Internet Explorer") {
        $(window).load(function () { $("#__GetAddr").click(); });
    }
    else {
        window.addEventListener('load', function () { $("#__GetAddr").click();                  }, false);
    }
</script>

Буду признателен за лучшее. : P

Ответы [ 5 ]

1 голос
/ 27 февраля 2012
<script type="text/javascript">
            if (navigator.appName == "Microsoft Internet Explorer") {
                $(window).load(function () { $("#__GetAddr").click(); });
            }
            else {
                window.addEventListener('load', function () { $("#__GetAddr").click();                  }, false);
            }
</script>
0 голосов
/ 20 сентября 2017

Вы используете jQuery версии 3.1.0, и событие load устарело для использования с версии jQuery 1.8.Событие загрузки удалено из jQuery 3.0.Вместо этого вы можете использовать метод и связать событие загрузки JavaScript:

$(window).on('load', function () {
      $("#__GetAddr").click();
 });
0 голосов
/ 01 декабря 2011

Это нехорошо, но вы можете использовать тайм-аут, если обнаружите, что браузер не Chrome.Однако я бы действительно попытался получить уведомление от самой карты, как только она будет загружена.

0 голосов
/ 01 декабря 2011

Вы можете попробовать то, что Google рекомендует в их документации к API Карт - поместить событие onload в тег body. Это должно работать для каждого браузера:

<body onload="ready()">

Затем объявите функцию ready () ниже в теге script:

<script type="text/javascript">
function ready() {
  $("#__GetAddr").click();
}
</script>
0 голосов
/ 01 декабря 2011

Вы даже пробовали готовый документ к нему?

$(document).ready(function() {
    $("#__GetAddr").click();
});
...