У меня были проблемы с моей страницей в iOS Mobile Safari - страница зависает при изменении ориентации. Моя функция выполнена на $(window).resize();
, которую Mobile Safari слушает для портретной / альбомной ориентации.
После взлома моего мозга и отчаянных попыток, я добавил return false;
в раздел .each();
своей функции и вуаля! Изменение ориентации больше не зависает! Но ...
Теперь функция не запускается для .each();
моих определенных элементов.
Как разрешить запуску функции для всех элементов при сохранении любого поведения, добавляемого return false;
(что предотвращает зависание Mobile Safari)?
Тестовая площадка: http://brantley.dhut.ch/
СПАСИБО!
JavaScript:
(function($){
$.respond = function(callback) {
$(document).ready(function() {
dimensions();
});
$(window).load(function() {
dimensions();
$('#load').fadeOut('fast', function() {
$('.z:first').fadeIn('slow');
$('#status').fadeIn('slow');
$('footer').fadeIn('slow');
});
});
$(window).resize(function() {
dimensions();
});
function dimensions() {
var i = $('.z');
i.each(function() {
var browserWidth = $(window).width();
var imgRatio = ($(this).width() / $(this).height());
var availableHeight = ($(document).height() - $('header').height() - $('#status').height() - $('footer').height() - 80);
var browserRatio = (browserWidth / availableHeight);
if (imgRatio >= 1) {
$(this).addClass('landscape');
}
if (browserRatio >=1.5) {
$('#container').css('min-height', '360px');
} else {
$('#container').css('min-height', '555px');
}
if (browserRatio >= imgRatio) {
/* landscape */
//$('body').css('background', 'blue');
$(this).height(availableHeight).width('auto').css('margin-top', '0');
} else {
/* portrait */
//$('body').css('background', 'green');
$(this).width(browserWidth - 40).height('auto').css('margin-top', (availableHeight - $(this).height())/2);
}
$(this).css('margin-left', (browserWidth - $(this).width())/2);
});
return false;
};
};
})(jQuery);