Кросс-браузерная реализация jQuery text-zoom - PullRequest
0 голосов
/ 17 декабря 2010

У меня есть код для увеличения / уменьшения размера шрифта. Это вызывает у меня головную боль, потому что каждый браузер, похоже, реализует $.css('font-size') по-своему ( см. Ошибка jquery ). Тем не менее, меня действительно убивает то, что Firefox хорошо масштабируется, но когда я использую функцию уменьшения масштаба ниже, он увеличивается . Webkit и IE работают как положено. Есть идеи на этот счет?

Я поместил это в скрипку здесь: http://jsfiddle.net/srQ3P/1/, где вы можете увидеть, как он работает, как ожидалось, и вы можете увидеть его сломанным в Firefox на странице проекта: http://cumberlandme.info/residents


ОСНОВНОЕ РЕДАКТИРОВАНИЕ

Извините, проблема не в коде, а в глючном поведении firefox. После увеличения или уменьшения масштаба с помощью элементов управления браузера (ctrl + plus или ctrol + minus) js перестает работать. Это не происходит в других браузерах. Это реальная проблема. Любой совет по , что

1 Ответ

0 голосов
/ 30 декабря 2010

Проблема в этом случае была с моей функцией масштабирования текста JavaScript.Исходная функция, которую я использовал (нашел в Интернете), искала определенное значение em в стиле основного шрифта, и, если он не нашел, сбросьте размер шрифта на «1em».Примерно так:

if (document.body.style.fontSize == "")
    document.body.style.fontSize = "1em";
document.body.style.fontSize = parseFloat(document.body.style.fontSize) + (multiplier * 0.1) + "em";

Это работало (почему, я не знаю) хорошо в IE, но не в Ffx.Таким образом, решение, которое я придумал, проверяет IE и делает все немного иначе, основываясь на том, является ли браузер IE или нет.Ничего не стоит, чтобы jQuery docs рекомендовал не проверять браузер таким образом, но я все равно это сделал!

var currSz = parseFloat($('body').css('font-size'));
Math.round(currSz);

if($.browser.msie)
    currSz++;
else
    currSz = currSz + .7;

$('body').css('font-size',currSz); 
...