Удалите оператор console.log()
из ветви else
, и он должен работать в IE - IE не нравится console.log()
, если консоль фактически не открыта, в то время как (большинство) других браузеров либо игнорируют его, либо регистрируются в как вы можете увидеть, если вы откроете консоль позже. (У меня нет IE9, но это все, что нужно, чтобы исправить это, когда я тестировал его в IE8.)
Также не имеет смысла иметь обработчик, готовый к документам, внутри обработчика $(window).load()
, поэтому вы должны удалить один или другой.
Чтобы добавить задержку между последовательными импульсами, просто используйте функцию .delay()
jQuery перед вызовом .animate()
в ветви else, например:
$(function () {
var $image = $('#container').children('img');
function animate_img() {
if ($image.css('opacity') == '1') {
$image.animate({opacity: '0.4'}, 2000, function () {
animate_img();
});
} else { // console.log removed from this spot
$image.delay(500).animate({opacity: '1'}, 2000, function () {
animate_img();
});
}
}
animate_img();
});
P.S. Учитывая, что анонимные функции, которые вы получили для полных обратных вызовов .animate()
, ничего не делают, кроме вызова animate_img()
, вы можете удалить анонимные функции и просто передать animate_img
напрямую. Таким образом, вы можете сделать функцию намного короче, если хотите:
$(function () {
var $image = $('#container').children('img');
function animate_img() {
var fade = $image.css('opacity') == '1';
$image.delay(fade?1:500).animate({opacity:fade?'0.4':'1'},2000,animate_img);
}
animate_img();
});