Javascript 如何防止IE10自动滚动到焦点上的文本区域,当文本区域实际可见时
我刚刚发现,当我在jQuery中聚焦文本区域时,IE10(也可能是IE9和IE8)会急切地滚动到文本区域中的光标位置,即使文本区域和光标在视线范围内。它将如此近距离地滚动到文本区域,这确实令人不安 我在网上做了一个例子: 我在页面上放置了一个大的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不会 我在顶部放置了一个固定的,当点击时,它也会在
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();
});
});
脱离主题,尝试将来的参考资料。