1

我刚刚发现,当我focus在 jQuery 中使用 textarea 时,IE10(也可能是 IE9 和 IE8)会急切地滚动到 textarea 中的光标位置,即使 textarea 和光标在视线内。它会如此紧密地滚动到文本区域,这真的很令人不安。

我做了一个在线示例: http: //larryzhao.com/test.html

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

然后你可以看到,用IE10打开页面,即使已经是insight,也会自动滚动到textarea,反之Chrome不会。

而且我在上面放了一个fixed <a>,点击的时候也会调用focustextarea。因此,如果您滚动到顶部并单击可见文本区域的链接,IE10 仍将执行滚动。

我有两个问题:

  1. 有没有一种简单的方法可以防止 IE10 (或 IE9/8 )这样做?为了实现与 Chrome 中相同的行为。

  2. 是否有任何其他操作会触发 IE10 中的这种奇怪行为?

非常感谢。

4

1 回答 1

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();
    });
});
于 2013-07-12T10:49:42.377 回答