是否有一种有效的方法来判断DOM元素(在HTML文档中)当前是否可见(出现在视口中)?
(关于Firefox的问题)
我有一个在$(document).ready()上执行的脚本,它应该在我的布局中垂直对齐块元素.90%的时间,它没有问题.然而,对于额外的10%,两件事之一发生:
进行定心所需的时间明显滞后,并且块元素跳入位置.这可能只是性能相关 - 因为页面大小通常很大,并且有大量的javascript一次执行.
中心将完全搞乱,并且块元素将向下推得太远或不够远.似乎它试图计算高度,但是测量结果不合适.
有没有理由为什么在DOM-ready上执行脚本会没有将所有正确的CSS值注入到DOM中?(所有CSS都在<head>
via a中<link>
).
此外,这是导致问题的脚本(是的,它是从这里直接采取的):
(function ($) {
// VERTICALLY ALIGN FUNCTION
$.fn.vAlign = function() {
return this.each(function(i) {
var ah = $(this).height();
var ph = $(this).parent().height();
var mh = (ph - ah) / 2;
$(this).css('margin-top', mh);
});
};
})(jQuery);
Run Code Online (Sandbox Code Playgroud)
谢谢.
是否window.onlaod
包括图像加载?或者我必须使用另一个活动吗?我想使用ajax调用来获取包含图像的HTML文档,但是我希望在所有图像被编码时显示此文档
我想在html页面中获取所有输入元素.我试过这个:
window.onload = function(){
input = document.querySelectorAll("input");
}
Run Code Online (Sandbox Code Playgroud)
但是,当我在外面用警报功能检查它时onload
,它什么也没做
alert(input.length) // doesn't do anything
Run Code Online (Sandbox Code Playgroud)
如果我使用它,这将给我html页面中输入元素的数量.
window.onload = function(){
input = document.querySelectorAll("input");
alert(input.length);
}
Run Code Online (Sandbox Code Playgroud)
这意味着我无法在外面访问它.我怎样才能在外面访问它?
UPDATE
这就是html页面的样子:
<html>
<head>
<script type="text/javascript" src="actions.js"></script>
</head>
<body>
<label for="name">Name:</label><br/>
<input type="text" id="name" /><br/>
<label for="address">Address:</label><br/>
<input type="text" id="address" /><br/>
<label for="email">E-mail:</label><br/>
<input type="text" id="email" />
</body>
</html>
Run Code Online (Sandbox Code Playgroud)