#javascript #jquery #firefox #jquery-plugins #webkit
#javascript #jquery #firefox #jquery-плагины #webkit
Вопрос:
Я обнаружил, что браузеры webkit помещают переполнение на уровень «body», в то время как остальные делают это на уровне «html». Как мне отличить использование javascript или jquery? Я хочу использовать animate({scrollTop: …}, …), но не хочу использовать «body, html или stop (true, true). Что я могу сделать, кроме этого? Было бы здорово, если бы был какой-либо способ дифференцировать в зависимости от браузера.
Комментарии:
1. Можете ли вы указать на тестовый пример, который показывает разницу в поведении, о которой вы говорите? Это помогло бы выяснить, как лучше всего его обнаружить…
2. Это так.. Я должен использовать $(«body»).animate для webkit и $(«html»).animate для others….so что я могу анимировать свойство scrollTop, как мне это сделать?
3. Я вижу. Похоже, WebKit не реализует dev.w3.org/csswg/cssom-view/#dom-element-scrolltop правильно. Что произойдет, если вы просто анимируете это на обоих
<html>
и<body>
? Если у вас нет явного стиля переполнения в теле, это должно работать нормально.
Ответ №1:
если вы действительно хотите отличать браузеры от клиентских, вы можете использовать javascript для поиска браузера и применения изменений через него на основе другого браузера.
это код, который я получил из Интернета, который точно различает браузеры.
var isOpera = !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;
// Opera 8.0 (UA detection to detect Blink/v8-powered Opera)
var isFirefox = typeof InstallTrigger !== 'undefined'; // Firefox 1.0
var isSafari = Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0;
// At least Safari 3 : "[object HTMLElementConstructor]"
var isChrome = !!window.chrome amp;amp; !isOpera; // Chrome 1
var isIE = /*@cc_on!@*/false || !!document.documentMode; // At least IE6
if(isFirefox){
//do the change
} else if (isChrome){
//do the change
}
Комментарии:
1. Поскольку спецификация фактически описывает поведение, предположительно, в одном из браузеров есть ошибка. Но если вы напишете код так, как вы предлагаете, он сломается, когда ошибка будет исправлена….