wordpress上的$(window).height()太多了

时间:2014-07-21 20:50:01

标签: jquery wordpress google-chrome

我正在创建工具提示的动态定位,我先在jsfiddle上测试代码,然后将我的代码放到我的网站上(在localhost上使用wordpress构建),在jsfiddle上我的脚本可以工作,但是当我把代码放到我的网站上时,它不起作用(不是动态地在chrome上),因为$(window).height()的结果不同。您可以检查this fiddle并尝试鼠标输入到链接(第一个链接),然后在控制台上查看日志,窗口高度的结果为wh :667,但在我的网站窗口高度为wh :12024wh : 11970(可变)

jQuery(document).ready(function ($) {    
    $('a[rel="bookmark"]').mouseenter(function () {
        console.log($(window).height());
    })
});

也使用此

jQuery(function($){
  $(window).ready(function(){
    console.log($(window).height());
  });
  $(window).on('resize', function(){
    console.log($(window).height());
  });
});

Google Chrome

jsfiddle:667

我的网站(wordpress):12024 - 可更改

的Mozilla

jsfiddle:602

我的网站:585

我确定,我添加了strict doctype

我找到了this explanation

  

$(window).height()是视口的高度,显示了   网站。 (不包括工具栏和状态栏以及类似的内容)

     

$(document).height()是您在文档中显示的文档的高度   视。如果它高于$(window).height()你就得到了   滚动条滚动文档

我认为在我的网站上结果$(window).height()是滚动条以滚动 chrome 上的文档(我的网站有一个很长的页面)。如果是这样,我怎样才能在我的网站上获得视口的高度,是否有另一种方法可以在每个浏览器(chrome,mozilla,opera等)中获得视口的相同结果(实际)高度?

注意:我不会考虑使用screen.height因为它可以显示屏幕(包括浏览器的工具栏)

2 个答案:

答案 0 :(得分:7)

调试这个宝宝花了我几个小时/天,但我终于明白了。信不信由你,但我几年没有这样的错误!多么讨厌的bug。

我不是说你有确切的问题,但是,这个线程正是我所面对的。我100%确定我的html设置为严格。

然而,我一做到了#34;检查元素"在Chrome中,严格DOCTYPE的实际定义已经消失。所以我检查了其他网站,我立刻意识到有一些极端可疑的事情发生,这不应该发生。 谁吃了严格的doctype?

不仅如此,我注意到HEAD的内容已移至<body>,其他奇怪的事情正在发生。

我做了任何合理的人做的事情,我推测我所有的时间都浪费在这个愚蠢的UTF-8 BOM上,因为我过去曾经遇到过很多问题。哦,男孩,我是对的。

在我没有bom切换到UTF-8之后,一切都开始完美无缺。请注意,有趣的是:我的网站似乎100%工作,即使是混乱的HTML(我从未注意到浏览器解释错误)。

为什么我的文件编码为UTF-8,首先是bom和&amp;为什么它甚至会影响浏览器?我不知道。

答案 1 :(得分:3)

好的,我明白了。我使用的是纯粹的javascript

$(window).height()替换为window.innerHeight

$(window).load(function(){
    var w = window,
    d = document,
    e = d.documentElement,
    g = d.getElementsByTagName('body')[0],
    y = w.innerHeight|| e.clientHeight|| g.clientHeight;
    console.log(y);
});

Chrome:

jsfiddle:667

我的网站:667

<强>的Mozilla

jsfiddle:602

我的网站:602

https://stackoverflow.com/a/11744120/1297435