Я обнаружил различия между браузерами, как они сообщают о вычисляемых размерах стилей при увеличении окна браузера. Пример JSBIN находится в http://jsbin.com/pilohonevo/2/. Код выглядит следующим образом:
$(window).resize(function()
{
var width1=$(".class1").css("width");
$(".class1").css("width",width1);
var width2="200px";
$(".class2").css("width",width2);
var width3=$(".class3").css("width");
$("#width1").html(width1);
$("#width2").html(width2);
$("#width3").html(width3);
$("#overflow1").html($(".overflow1")[0].scrollWidth);
$("#overflow2").html($(".overflow2")[0].scrollWidth);
$("#overflow3").html($(".overflow3")[0].scrollWidth);
});
Когда вы приближаетесь к минимуму, нажимая CMD- несколько раз, а затем возвращаетесь на 100%, нажимая CMD + несколько раз, в Chrome (версия Mac 38.0.2125.111) вы получаете следующие значения:
Белый DIV 1 сообщает свою ширину как 203px, хотя DIV 2 и 3 сообщает 200px. Также scrollWidth - 203, что тоже неправильно. Это означает, что вы не можете использовать getComputedStyle
или jQuerys .css()
для получения измерений, если не уверены, что окно браузера не увеличено. И поскольку масштабирование не отменяется, вы никогда не можете быть уверены, и вы никогда не сможете доверять этим измерениям. Я тестировал также $(elem).scrollLeft()
и $(elem).scrollTop()
, и они также ненадежны при масштабировании.
Таким обходным решением может быть использование "необработанных" значений, а не "вычисленных" значений.
Существует ли кросс-браузерный метод javascript или jQuery, чтобы получить что-то вроде getUnComputedStyle()
, которое определяет измерения с использованием необработанных значений из таблиц стилей и/или атрибутов стиля, потому что они единственные, которые являются масштабируемыми?
Определение уровня масштабирования и внесение исправлений на основе этого ненадежны в соответствии с моими испытаниями, поскольку существуют различия в браузерах, а уровни ошибок в разных свойствах стиля не всегда связаны с уровнем масштабирования.
(Firefox Mac 33.1 и Safari Mac версии 7.1 (9537.85.10.17.1) и IE 11 Win и эмулированные режимы вплоть до версии 7 сообщают правильные значения.
Opera Mac 25.0.1614.68, Safari Win 5.1.7 и выше сообщалось о неверных значениях отчета в Chrome.)