如何删除 DOM 就绪处理程序,以便可以触发 Javascript 函数
How to remove a DOM ready handler so a Javascript function can be fired on
我在JS中制作了一个模块(没有jQuery),它根据来自客户端浏览器的数据(获取浏览器宽度,高度并做适当的事情......等)更改网页的背景图像,但我只知道如何通过DOM eventListeners在页面加载时初始化它,我希望能够通过单击或其他用户驱动的事件触发它。
我不认为我完全掌握了在不使所有其他代码无法使用的情况下删除 EventListener 需要做什么,这是我自己尝试的最终结果。
任何正确方向的点将不胜感激 - 下面是脚本调用的前几个函数:
// the initialization of the page
bindReady(function(){
startBGResize();
});
// DOM ready handler
function bindReady(handler){
var called = false;
var ready = function() {
if (called) return;
called = true;
handler();
};
if (document.addEventListener) {
document.addEventListener('DOMContentLoaded', ready, false);
} else if (document.attachEvent) {
if (document.documentElement.doScroll && window == window.top) {
var tryScroll = function(){
if (called) return;
if (!document.body) return;
try {
document.documentElement.doScroll('left');
ready();
} catch(e) {
setTimeout(tryScroll, 0);
}
};
tryScroll();
}
document.attachEvent('onreadystatechange', function(){
if (document.readyState === 'complete') {
ready();
}
});
}
if (window.addEventListener) window.addEventListener('load', ready, false);
else if (window.attachEvent) window.attachEvent('onload', ready);
}
如果你想在
单击某个元素时调用startBGResize
,你可以这样做:
var element = document.querySelector("CSS selector for the element that you'll click");
if (element.addEventListener) {
element.addEventListener("click", startBGResize, false);
} else if (element.attachEvent) {
element.attachEvent("onclick", startBGResize);
}
这适用于所有现代浏览器,也适用于IE8。
如果你要定期钩接事件(如果你需要在更高版本的IE中支持IE8或"兼容性"模式),你可能希望从另一个答案中获取hookEvent
函数,而不是每次都对if
语句进行编码(hookEvent
也做补丁stopPropagation
等事情)。
相关文章:
- 从函数JavaScript返回不可变数组/对象
- 将对象传递给函数.JavaScript
- 如何定义const函数javascript(语法糖)
- 新的日期函数javascript
- TypeError:this.getAttribute不是一个函数-javascript
- 从函数javascript发送变量
- 扩展自容器函数Javascript
- 从内部函数javascript内部分配外部函数的对象
- 使用函数JavaScript中的函数
- 在这里使用回调函数(JavaScript)有什么好处吗
- 来自函数 Javascript 的 NaN 返回值 ||函数执行顺序
- 将“e”传递给一个新函数 - javascript
- 调用函数中的一个函数——Javascript
- 传递的变量不适用于我的函数-Javascript
- 如何将类方法设置为等于多个函数?-Javascript
- 显示php中的函数javascript
- 如何使用php代码创建函数Javascript弹出框
- 未调用的外部函数-javascript
- 如何在类中运行函数.Javascript
- 关闭mouseover上的一个函数——Javascript,jQuery