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