我刚刚发现IE10(也许还有IE9和IE8)会急切地滚动到textarea中的光标位置,当我在jQuery中focus
一个textarea时,即使textarea和光标在视线中。它将如此紧密地滚动到textarea,这真的令人不安。
我做了一个在线示例:http://larryzhao.com/test.html。
我在页面上放了一个大的div
来将textarea推到页面的底部,并在页面加载时在textarea上调用focus
。
然后你可以看到,在用IE10打开页面时,它会自动滚动到textarea,即使它已经是洞察力,相反,Chrome也不会。
我在顶部放置了一个固定的<a>
,点击后它也会在textarea上调用focus
。因此,如果您滚动到顶部并单击带有textarea的链接,IE10仍将执行滚动。
我有两个问题:
是否有一种简单的方法可以防止IE10(或IE9 / 8)这样做?为了达到与Chrome相同的行为。
是否有任何其他行为会在IE10中触发这种奇怪的行为?
非常感谢。
答案 0 :(得分: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();
});
});