IE Monster又一次遇到了一个奇怪的问题。
我正在向我继承的asp.net网站写一些更改。其中一个问题是在某些页面中有几个控件将javascript函数作为处理程序添加到onload事件中(如果重要的话使用YUI)。其中一些事件处理程序假定某些其他函数已被执行。
这在Firefox和IE7中表现良好,因为处理程序似乎按照注册顺序执行。另一方面,IE8执行向后。
我可以采用某种双重检查方法,但鉴于控件存在于几个页面中,我觉得它会创建更多的依赖关系。所以我开始编写自己的队列类,我将函数推送到并可以控制它们的执行顺序。然后我将注册一个onload处理程序,指示队列按我的首选顺序执行。
我已经完成了这一步并开始想知道两件事:
任何人都有任何见解?是否有任何干净的解决方案可以让我轻松执行执行命令?
答案 0 :(得分:0)
我找不到任何定义事件调用顺序的标准。这不是问题这是纯无政府主义: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 ... }
}
所以也许你在考虑队列和锁定机制时有点偏离轨道:)