2013-07-12 5 views
1

Я только что нашел, что IE10 (может быть, IE9 и IE8) с нетерпением прокручивает до места курсора в текстовом поле, когда я focus текстовое поле в jQuery , даже если отображается текстовая область и курсор. Он будет прокручиваться до текстового поля так близко, что действительно беспокоит.Как предотвратить автоматический прокрутку IE10 в текстовое поле на фокусе, когда текстовое поле действительно находится в поле зрения

Я сделал онлайн-пример: http://larryzhao.com/test.html.

Я положил большой div на страницу, чтобы немного подтолкнуть текстовое поле к нижней части страницы и вызвать focus на textarea на загрузке страницы.

Тогда вы могли видеть, что при открытии страницы с помощью IE10 она автоматически прокручивается до текстового поля, даже если это уже прозрение, напротив, Chrome не будет.

И я поместил фиксированный <a> сверху, он также позвонит focus на текстовое поле, когда щелкнет. Поэтому, если вы прокрутите вверх и нажмите ссылку с текстовым полем, IE10 по-прежнему будет выполнять прокрутку.

И у меня есть два вопроса:

  1. есть простой способ предотвратить IE10 (или IE9/8) делать это? Для достижения такого же поведения, как в Chrome.

  2. Есть ли какие-либо другие действия, которые могут вызвать это нечетное поведение в IE10?

Большое спасибо.

+0

Off тему, попробуйте [jsFiddle] (http://jsfiddle.net/) для будущих ссылок. –

ответ

0

Попробуйте это:

$(document).ready(function() { 
    var top = $('textarea').offset().top; 
    function isScrolledIntoView(elem) { 
     var docViewTop = $(window).scrollTop(); 
     var docViewBottom = docViewTop + $(window).height(); 

     var elemTop = $(elem).offset().top; 
     return (docViewBottom > elemTop); 
    } 
    if (!isScrolledIntoView($('textarea')[0])) { 
     $('textarea').focus(function() { 
      $(window).scrollTop(top-120); 
     }); 
    } else { 
     $('textarea').focus(function() { 
      $(window).scrollTop(0); 
     }); 
    } 

    $('textarea').focus(); 
    $('a').click(function() { 
     $('textarea').focus(); 
    }); 
}); 
Смежные вопросы