Ale*_*ara 12 javascript browser compatibility setinterval
我注意到一对夫妇的JavaScript库,利用的setInterval,该库将事件侦听器绑定到window的unload事件,以清除使用所有创建的间隔clearInterval.
一个例子是History.js,它保持"设置间隔列表,在卸载文档时清除".
片段:
// ====================================================================
// Interval record
/**
* History.intervalList
* List of intervals set, to be cleared when document is unloaded.
*/
History.intervalList = [];
/**
* History.clearAllIntervals
* Clears all setInterval instances.
*/
History.clearAllIntervals = function(){
var i, il = History.intervalList;
if (typeof il !== "undefined" && il !== null) {
for (i = 0; i < il.length; i++) {
clearInterval(il[i]);
}
History.intervalList = null;
}
};
Run Code Online (Sandbox Code Playgroud)
片段:
/**
* Clear Intervals on exit to prevent memory leaks
*/
History.Adapter.bind(window,"unload",History.clearAllIntervals);
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是,为什么有些JavaScript作者会这样做呢?当浏览器离开页面时,似乎会自动清除这些间隔(我从未见过它).这样做有好处吗?它会弥补某种浏览器错误吗?如果是这样,它会影响哪些错误和哪些浏览器?
正如评论中提到的,此代码已添加到 History.js 中以与 Env.js 兼容。
Env.js 是一个用 JavaScript 编写的无头浏览器,现已不再积极开发。因此,至少可以说,这绝对是一种极端情况。我猜测这个问题是由 JavaScript 本身的限制引起的。
用户Lance Leonard在评论中指出IE 10可能存在内存泄漏问题。
| 归档时间: |
|
| 查看次数: |
1141 次 |
| 最近记录: |