LRE*_*LRE 9 javascript events dom-events
IE Monster又一次遇到了一个奇怪的问题.
我正在将一些更改写入我继承的asp.net网站.其中一个问题是在某些页面中有几个控件将javascript函数作为处理程序添加到onload事件中(如果重要的话使用YUI).其中一些事件处理程序假定已执行某些其他功能.
这在Firefox和IE7中表现良好,因为处理程序似乎按注册顺序执行.另一方面,IE8 向后做这件事.
我可以采用某种双重检查方法,但鉴于控件存在于几个页面中,我觉得它会创建更多的依赖关系.所以我开始编写自己的队列类,我将函数推送到并可以控制它们的执行顺序.然后我将注册一个onload处理程序,指示队列按我的首选顺序执行.
我已经完成了一段时间,并开始想知道两件事:
有人有任何见解吗?任何干净的解决方案,使我能够轻松执行执行顺序?
anx*_*anx -1
我找不到任何可以定义事件调用顺序的标准。这不是问题,这是纯粹的无政府状态:D
此外,这种模式有数百个独立的实现,因此它们不太可能很快就表现得一致。
所以是的,你要独自离开。
我拥有的最简洁、最兼容的方法是仅注册一个事件处理程序:D 这样,本机顺序就变得无关紧要了。
现在的技巧是在此基础上添加您自己的可预测事件管理 - 使用库,例如根据您的要求使用 nodeJS 版本进行扩展。
请注意,JS 允许您自由地重写原型派生函数,因此另一种可能性是这样的:
function eventify(element){
element._event = {}
element.on = element.addListener = function(evt,fn){ ... }
element.off = element.removeListener = function(evt,fn){ ... }
element.emit function(evt,args...){ ... do it the right way ... }
}
Run Code Online (Sandbox Code Playgroud)
所以也许你在考虑队列和锁定机制时有点偏离轨道:)