аватар |

Статьи / JavaScript /

Конфликт событий onLoad и window.onload

Следующая заметка делалась в качестве напоминалки для себя, но надеюсь поможет другим

Например Вы в body уже прописали запуск определённого события

<body onload="abvgd_init()">


...или прописали код, указанный ниже, и теперь у Вас не работают добавленные вами виджеты Яндекса, Контакта или Facebook?
window.onload = function () {


... и теперь у Вас не работают добавленные после виджеты Яндекса, Контакта или Facebook?

Рассмотрим вышеупомянутые два варианта с Яндексом и ВКонтакте.

Что делаем с конфликтом onload с Яндекс Картами



У Яндекс карт, как правило, следующий код на странице
window.onload = function () {
var map = new YMaps.Map(document.getElementById("YMapsID"));
map.setCenter(new YMaps.GeoPoint( какие-нибудь координаты ), 11);


Так вот меняем строчку
window.onload = function () {

на
YMaps_init = function () {


В body следующим образом добавляем событие
<body onload="YMaps_init();">


Если в body уже было другое событие, то добавляем следующим образом
<body onload="abvgd(); YMaps_init();">

Данные события будут загружать сразу же при загрузке страницы.

Что делаем с конфликтом onload с виджетом ВКонтакте



Там по аналогии
window.onload = function () {
 VK.init({apiId: 111, onlyWidgets: true});


Также меняем строчку
window.onload = function () {

на
VKcom_init = function () {


А в body следующим образом добавляем ещё одно событие
<body onload="abvgd(); VKcom_init();">


Также делаем с тремя и более событиями)

Готово!
 



Похожие статьи


Комментарии к статье (vk.com)