问题
setTimeout在某一次写一个倒计时功能时,当浏览器缩小或者离开当前页面,倒计时会不准确,进入休眠模式,执行间隔比预期要慢。
设定一个 150ms 后执行的定时器不代表到了 150ms 代码就立刻执行,它表示代码会在 150ms 后被加入到队列中。如果在这个时间点上,队列中没有其他东西,那么这段代码就会被执行。
也就是说定时器会在你任务队列中没用执行任务时才会将你的定时器添加到任务队列中。这样,他会带来一些问题:
无视代码错误
setInterval有个讨厌的习惯,即对自己调用的代码是否报错这件事漠不关心。换句话说,如果setInterval执行的代码由于某种原因出了错,它还会持续不断(不管不顾)地调用该代码。
无视网络延迟...
offset() 返回值:Object{top,left}
概述
获取匹配元素在当前视口的相对偏移。
返回的对象包含两个整形属性:top 和 left。此方法只对可见元素有效。
示例
描述:
获取第二段的偏移
HTML 代码:
<p>Hello</p><p>2nd Paragraph</p>
jQuery 代码:
var p = $("p:last");
var offset = p.offset();
p.html( "left: " + offset.left + ", top: " + offset.top );
结果:
<p>Hello</p><p>left: 0, top: 35</p>
...
offsetParent() 返回值:jQuery
概述
返回第一个匹配元素用于定位的父节点。
这返回父元素中第一个其position设为relative或者absolute的元素。此方法仅对可见元素有效。
:reset 返回值:Array<Element(s)>
概述
匹配所有重置按钮
示例
描述:
查找所有重置按钮
HTML 代码:
<form>
<input type="text" />
<input type="checkbox" />
<input type="radio" />
<input type="image" />
<input type="file" />
<input type="submit" />
<input type="reset" />
<input type="password" />
<input type="button" />
<select><option/></select>
...
getScrollOffsets [1.6.0]
document.viewport.getScrollOffsets() -> [Number, Number] 或 { top: Number, left: Number }
返回当前窗口可视部分的水平和垂直滚动偏移值。
样例
document.viewport.getScrollOffsets();
//-> { left: 0, top: 0 }
window.scrollTo(0, 120);
document.viewport.getScrollOffsets();
//-> { left: 0, top: 120 }
...
withinIncludingScrolloffsets [不推荐]
withinIncludingScrolloffsets(element, x, y) -> Boolean
判断点 x, y(以页面左上角为坐标原点)是否在 element 的边界范围内。 当 element 是一个可滚动容器的子节点时,请使用该方法代替 Position.within。 在使用时,应按照 Position.prepare --> withinIncludingScrolloffsets --> Position.overlap 的顺序调用这些方法。
已废弃!
该方法用于处理 Position.within 的一种特殊情形:element 是一个滚动容器的子节点。(例如,在 Script.aculo.us 中,当一个可拖拽的容器是可滚动容器时,就会用到它。) 从执行效率方面考虑,一般...
realOffset [不推荐]
realOffset(element) -> [Number, Number]
在内含滚动条的容器中计算元素的累积滚动偏移值。
已被 Element#cumulativeScrollOffset 方法取代。
累加元素及它的所有先代节点的 scrollLeft 和 scrollTop。
该方法常用于在多个滚动容器(例如在一个可滚动的容器中包含一个可滚动的文档)中计算元素的滚动偏移值。
注意:所有返回值都仅有数字,单位为像素。
positionedOffset [不推荐]
positionedOffset(element) -> [Number, Number]
以 element 的容器块(Containing Block)节点(译注:距离元素最近的 CSS position 属性为 relative 或 absolute 的先代节点)为坐标原点,返回 element 的坐标偏移值(元素的容器块节点可通过 Position.offsetParent(element) 方法获取)。
已被 Element#positionedOffset 方法取代。
这个方法其实是累加元素及其所有父元素的 offsetLeft 和 offsetTop,直到其中一个元素的 CSS position 属性不等于 static(译注:static 是 position 的默认值)为止。
注意:所有返回值都仅有数字,单位为像素。
...
offsetParent [不推荐]
offsetParent(element) -> HTMLElement
返回 element 的容器块(Containing Block)(译注:距离元素最近的 CSS position 属性为 relative 或 absolute 的先代节点)节点, 如果不存在这样一个节点,则返回 body 元素。
已被 Element#getOffsetParent 方法取代。
返回的元素是 element 的 CSS containing block。
cumulativeOffset [不推荐]
cumulativeOffset(element) -> [Number, Number]
返回 element 相对于页面左上角的坐标。
已被 Element#cumulativeOffset 方法取代。
累加元素及它的所有先代节点的 offsetLeft 和 offsetTop。
注意:所有返回值都仅有数字,单位为像素。
unset [1.6]
unset(key) -> value
删除 hash 中的键,并返回键对应的值。
样例
var h = new Hash({ a: 'apple', b: 'banana', c: 'coconut' });
h.unset('a');
// -> 'apple'
h.inspect();
// -> #<Hash:{'b': 'banana', 'c': 'coconut'}>
h.unset('d');
// -> undefined
h.inspect();
// -> #<Hash:{'b': 'banana', 'c': 'coconut'}>
...
set [1.6]
set(key, value) -> value
将 hash 中 key 指定的键的值设置为 value,返回所设置的值(value)。 译注:如果不存在指定的键,则新增。
样例
var h = new Hash({ a: 'apple', b: 'banana', c: 'coconut' });
h.set('d', 'orange');
// -> 'orange'
h.inspect();
// -> #<Hash:{'a': 'apple', 'b': 'banana', 'c': 'coconut', 'd': 'orange'}>
h.set('a', 'kiwi');
// -> 'kiwi'
h.inspect();
// -> #<Hash:{'a': 'kiwi', 'b': 'banana', 'c': 'coconut', 'd': 'orange'}>
...
reset
reset(formElement) -> HTMLFormElement
将表单中控件的值重置为默认值。
样例
Form.reset('contact')
// 等价于:
$('contact').reset()
// 两种方法都具有与按下 reset 按钮同样的效果
该方法允许你自动重置一个表单。它封装了 HTML 表单元素原生的 reset() 方法。
viewportOffset [1.6]
viewportOffset(element) -> [Number, Number] 或 { left: Number, top: Number }
返回 element 相对于浏览器可视区域左上角的坐标值。(译注:坐标原点以浏览器当前可见的部分为基准, 意即当滚动条滚动后,坐标原点也随之改变,坐标原点在当前窗口中永远可见。)
译注:假定返回值为 offset,则 X 轴坐标可通过 offset[0] 获取,也可以通过 offset.left 获取,Y 轴坐标可通过 offset[1] 获取,也可通过 offset.top 获取。
注意:所有返回值都仅有数字,单位为像素。
...
setStyle
setStyle(element, styles) -> HTMLElement
修改 element 的 CSS 样式属性。参数 styles 是一个包含属性名/值对的 Hash 对象, 属性名必须使用 camelized 命名方式指定(译注:例如 CSS 属性 border-width 应写成 borderWidth,而不能写成 border-width)。
样例
$(element).setStyle({ backgroundColor: '#900', fontSize: '12px' });
// -> HTMLElement
注意
该方法在处理 float 和 opacity 时,对不同的浏览器而言是透明的。然而,float 是一个保留的关键字,所以必须进行转义,或使用 cssFloat 来代替。另外,opacity 的取值界于 0(完全透明)和 1(完全不透明)之间。在不同的浏览器...
positionedOffset [1.6]
positionedOffset(element) -> [Number, Number] 或 { left: Number, top: Number }
以 element 的容器块(Containing Block)节点(译注:距离元素最近的 CSS position 属性为 relative 或 absolute 的先代节点)为坐标原点,返回 element 的坐标偏移值(元素的容器块节点可通过 Element#getOffsetParent 方法获取)。
译注:假定返回值为 offset,则 X 轴坐标可通过 offset[0] 获取,也可以通过 offset.left 获取,Y 轴坐标可通过 offset[1] 获取,也可通过 offset.top 获取。
这个方法其实是累加元素及其所有父元素的 offsetLeft 和 offsetTop,直...