jQuery focus()页面滚动长度

时间:2013-02-08 12:16:32

标签: javascript jquery css browser cross-browser

我有一个这样的代码:

<a href="javascript://" onclick="$('#newMsgTxt').focus();">New message</a>
<div style="min-height: 1300px;"></div>
<textarea id="newMsgTxt"></textarea>
<div style="min-height: 500px;"></div>

这就是问题所在: 点击链接后,在不同的浏览器中,页面滚动到不同的位置。

点击后屏幕上textarea位置的示例:

Chrome: 中心
FF: 底部
Opera: top

如何让所有浏览器都像Chrome一样工作?

5 个答案:

答案 0 :(得分:1)

$('a').click(function(e){
    e.preventDefault();
    var o = $('#newMsgTxt').focus().offset().top, $w = $(window);
    $w.scrollTop(o - ($w.height() / 2));
});

http://jsfiddle.net/2BHRw/

答案 1 :(得分:0)

试试这个。

onclick="$('#newMsgTxt').focus().val($('#newMsgTxt').val());

答案 2 :(得分:0)

Html:

<a href="" id="newMessage">New message</a>

JQuery:

$(document).ready(function() {
    $('#newMessage').click(function(e) {
        e.preventDefault();
        $('#newMsgTxt').focus();
    });    
});

http://jsfiddle.net/soyuka/jxZw2/

答案 3 :(得分:0)

这是因为滚动位置不同,

您可以使用console.log(window.scrollY)点击link进行测试 所以你必须为此编码以使其在中心对齐。

代码就像

$(function() {
    $('a').click(function(e){
        $('#newMsgTxt').focus();
        var offsetTop = offset().top; 
        $(window).scrollTop(offsetTop - ($(window).height() / 2));
    });
});

你的html就像:

<a href="javascript://">New message</a>
<div style="min-height: 1300px;"></div>
<textarea id="newMsgTxt">gfg</textarea>
<div style="min-height: 500px;"></div>

答案 4 :(得分:0)

嗨尝试下面的代码......我的命名不好......所以,按照你的想法替换。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script src="Scripts/jquery-1.7.1.js" type="text/javascript"></script>
   <script>

       function test() {
           var o = $('#newMsgTxt').focus().offset().top, $w = $(window);
                $w.scrollTop(o - ($w.height() / 2));
       }
   </script>
</head>
<body>
<a  onclick="test();">New message</a>
<div style="min-height: 1300px;vertical-align:top;"></div>
<textarea id="newMsgTxt" ></textarea>
<div style="min-height: 500px;"></div>
</body>
</html>