Метод перекрестного браузера для обнаружения scrollTop окна браузера

Вы можете использовать функцию pymongo по умолчанию

connObj = MongoClient(MONGO_HOST, MONGO_PORT)
connObj[MONGO_DB].authenticate(MONGO_UNAME, MONGO_PASSWD)
.
62
задан 16 May 2009 в 01:01
поделиться

3 ответа

function getScrollTop(){
    if(typeof pageYOffset!= 'undefined'){
        //most browsers except IE before #9
        return pageYOffset;
    }
    else{
        var B= document.body; //IE 'quirks'
        var D= document.documentElement; //IE with doctype
        D= (D.clientHeight)? D: B;
        return D.scrollTop;
    }
}

alert(getScrollTop())
88
ответ дан 24 November 2019 в 16:42
поделиться

Если вы не хотите включать целую библиотеку JavaScript, вы часто можете извлечь из нее нужные фрагменты.

Например, именно так jQuery реализует кроссбраузерная прокрутка (вверху | слева):

function getScroll(method, element) {
  // The passed in `method` value should be 'Top' or 'Left'
  method = 'scroll' + method;
  return (element == window || element == document) ? (
    self[(method == 'scrollTop') ? 'pageYOffset' : 'pageXOffset'] ||
    (browserSupportsBoxModel && document.documentElement[method]) ||
    document.body[method]
  ) : element[method];
}
getScroll('Top', element);
getScroll('Left', element);

Примечание: вы заметите, что приведенный выше код содержит переменную browserSupportsBoxModel , которая не определена. jQuery определяет это , временно добавляя div на страницу и затем измеряя некоторые атрибуты, чтобы определить, правильно ли браузер реализует блочную модель. Как вы понимаете, этот флаг проверяет наличие IE. В частности, он проверяет IE 6 или 7 в режиме совместимости . Поскольку обнаружение довольно сложное, я оставил его в качестве упражнения для вас ;-), предполагая, что вы уже использовали браузер функцию обнаружение где-то в другом месте вашего кода.

Изменить: если вы еще не догадались, я настоятельно рекомендую вам использовать библиотеку для такого рода вещей , Накладные расходы - это небольшая плата за надежный и ориентированный на будущее код, и любой, кто будет работать с кроссбраузерным фреймворком, будет гораздо продуктивнее. (В отличие от бесчисленных часов, бьющихся головой об IE).

13
ответ дан 24 November 2019 в 16:42
поделиться

, чтобы избавить вас от всех проблем, используйте фреймворк, такой как jquery или mootools который вычисляет все эти значения в одной строке (кроссбраузерность) в mootools его $ ('element'). getTop (); в jquery вам понадобится плагин с именем sizes, если я правильно помню хотя в большинстве случаев вы можете использовать element.getScrollTop () даже без фреймворка; чтобы получить то, что тебе нужно единственная проблема - в IE7, и ниже этот расчет несколько ошибочен, так как он не принимает во внимание значение позиции элемента например, если у вас есть атрибут position: absolute css для этого элемента вычисление выполняется для родительского элемента этого элемента

-3
ответ дан 24 November 2019 в 16:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: