Javascript 如何防止IE10自动滚动到焦点上的文本区域,当文本区域实际可见时

Javascript 如何防止IE10自动滚动到焦点上的文本区域,当文本区域实际可见时,javascript,internet-explorer,internet-explorer-10,Javascript,Internet Explorer,Internet Explorer 10,我刚刚发现,当我在jQuery中聚焦文本区域时,IE10(也可能是IE9和IE8)会急切地滚动到文本区域中的光标位置,即使文本区域和光标在视线范围内。它将如此近距离地滚动到文本区域,这确实令人不安 我在网上做了一个例子: 我在页面上放置了一个大的div,将textarea推到页面底部一点,并在页面加载时调用textarea上的focus 然后你可以看到,在用IE10打开页面时,它会自动滚动到文本区域,即使它已经是insight,相反,Chrome不会 我在顶部放置了一个固定的,当点击时,它也会在

我刚刚发现,当我在jQuery中聚焦文本区域时,IE10(也可能是IE9和IE8)会急切地滚动到文本区域中的光标位置,即使文本区域和光标在视线范围内。它将如此近距离地滚动到文本区域,这确实令人不安

我在网上做了一个例子:

我在页面上放置了一个大的
div
,将textarea推到页面底部一点,并在页面加载时调用textarea上的
focus

然后你可以看到,在用IE10打开页面时,它会自动滚动到文本区域,即使它已经是insight,相反,Chrome不会

我在顶部放置了一个固定的
,当点击时,它也会在文本区域调用
焦点。因此,如果您滚动到顶部,并单击可见文本区域的链接,IE10仍将执行滚动

我有两个问题:

  • 有没有一种简单的方法可以防止IE10(或IE9/8)这样做?以达到与铬相同的性能

  • 在IE10中是否还有其他行为会触发这种奇怪的行为

  • 非常感谢。

    试试这个:

    $(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();
        });
    });
    
    脱离主题,尝试将来的参考资料。