Любой способ заставить .load на Chrome? - PullRequest
0 голосов
/ 06 июля 2011

У меня есть очень простая функция, которая получает данные изображения и затем помещает их, также после этого она запускает sizeImages (); функция, которая будет изменять размер изображения пропорционально размеру браузера. Проблема в том, что он работает на любом браузере, кроме Chrome (webkit). Он корректно изменяет размер при первом нажатии, но после повторного нажатия он не будет работать. Так что я спрашиваю, есть ли возможность заставить его работать?

$.get("getBg.php", {
    img: (this).id
},
function(data){
    $("#bg").html(data);
    $("#bgImage").load(function() {
        sizeImages();
    });
});

1 Ответ

1 голос
/ 06 июля 2011

Я подозреваю, что это связано с тем, что (если изображение находится в кэше браузера), оно может быть загружено сразу после создания.Если обработчик «load» подключен после создания, то событие load уже сработало до того, как был подключен ваш обработчик, и ваш обработчик загрузки никогда не будет вызван.

Обычно вы решаете эту проблему, чтобы убедиться, что ваш кодидет в следующем порядке:

var myImg = new Image();
myImg.onload = myLoadFunc;
myImg.src = "set URL here";

Это гарантирует, что обработчик загрузки будет установлен до загрузки изображения.

Ваш пример кода определенно подвержен этой проблеме при созданииполностью указанные теги изображений перед присоединением обработчика загрузки.

Пример Дэвида, вероятно, не работает, потому что ".live" полагается на распространение события, которое, я не думаю, работает для события загрузки (я думаю, что это было в основномпредназначен для событий мыши или клавиш).

Если вам нужно запустить событие загрузки, вам нужно будет создать объект изображения (пока на нем не установлен src), прикрепить обработчик загрузки и затем установить srcчтобы убедиться, что вы получите событие загрузки.Также возможно создать HTML, затем присоединить событие загрузки и затем проверить, загружено ли уже изображение, и если это так, вызвать событие загрузки вручную, хотя это не так безопасно, как в моем примере кода выше.Если вы создаете изображение из HTML, также безопасно указать обработчик загрузки в HTML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...