jQuery scrollTop(val)不在页面刷新上工作

时间:2017-07-12 14:22:09

标签: javascript jquery html

我有这个当前简单的html文档:

<!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>
    <script  src="https://code.jquery.com/jquery-1.9.1.min.js"></script>

    <style type="text/css">
        html, body {
            margin:0;
            height:5321px;
            width:7000px;
        }
        .contenedor-mapa {
            height:5321px;
            width:7000px;           
        }
    </style>
    <script type="text/javascript">

        $(document).ready(function() {
            $('body').scrollTop($('body').height()/2);
            $('body').scrollLeft($('body').width()/2);
            });
    </script>
</head>
<body>
    <div class="contenedor-mapa"> 
    </div>
</body>
</html>

我正在制作一个jquery脚本来自动制作滚动中心,它让我发疯,因为它似乎什么都没有工作,并且没有看到任何理由。

令我惊讶的是,我将代码翻译为Fiddle,并且按预期工作。所以经过一些测试后,看起来这个脚本只有在新窗口或浏览器选项卡上打开html后才会起作用,这是第一次,也是第一次。之后,如果我刷新(F5或Ctrl + F5),脚本就不再像我想的那样再次工作了。

我尝试了所有我能想到的更改$(document).ready(function() {}); ( window ).on( "load", function() {});,但仍然相同。如果每次我需要刷新以检查新代码,我都必须继续工作,我必须继续在新标签上打开html。

html不在任何IDE下,只是文件夹上的存档,但我甚至试图在visual studio中创建一个新网站,我运行这个html,并且我遇到了同样的问题。

也许我错过了一些非常简单的事情,但任何帮助都会非常难以理解

已编辑:如果您尝试复制问题,请加载页面,移动滚动并刷新。卷轴不会再次居中......至少对我而言。

2 个答案:

答案 0 :(得分:1)

我相信有两种方法可以解决这个问题

1。方式 - 使用animate()方法

$(document).ready(function() {
  $('html, body').animate({ scrollTop: ($('body').height() / 2) }, 0);
  $('html, body').animate({ scrollLeft: ($('body').width() / 2) }, 0);
});

2。方式 - 使用&#39; html&#39;而不是&#39; body&#39;

$(document).ready(function() {
  $('html').scrollTop($('html').height()/2);
  $('html').scrollLeft($('html').width()/2);
});

答案 1 :(得分:-1)

在某些情况下或浏览器中获取真正的文档尺寸可能会很复杂。您可以验证它是否返回正确的值。:

WITH TEMP AS 
(
    SELECT A.* , 
    CASE WHEN C.FILENAME LIKE '%ORDER%' THEN 1 ELSE 0 END AS 'ORDER'  , 
    CASE WHEN C.FILENAME LIKE '%DELIVERY%' THEN 1 ELSE 0 END AS 'DELIVERY' , 
    CASE WHEN C.FILENAME LIKE '%payement%' THEN 1 ELSE 0 END AS 'PAYMENT'  
    FROM ITEM AS A 
    INNER JOIN ITEMFILES AS B ON A.ITEMID = B.ITEMID  
    INNER JOIN PHISICSfILE AS C ON B.FILEID = C.FILEID 
)    
SELECT ITEMID , NAME , QUANTITY , 
       SUM([ORDER]) AS 'ORDER'  , 
       SUM(DELIVERY) AS 'DELIVERY' , 
       SUM(PAYMENT) AS 'PAYED'
FROM TEMP 
GROUP BY  ITEMID , NAME , QUANTITY

在你的情况下,它可能会返回0或null。在这种情况下,您可以尝试使用此插件jQuery.documentSize。它应该在所有场景中返回适当的值。