我继承的遗留html有很多类型为
的js调用Event.observe(window, 'load', function() {
// Various snippets of code
});
我希望能够根据用户与页面的交互,在已经加载页面之后触发链接到窗口加载事件的所有函数。理想情况下,我会做类似
的事情window_on_load_function = window.someCommandHere();
window_on_load_function();
有没有办法实现这个目标?我可以使用JQuery,但是没有JQuery的解决方案也会受到赞赏。提前谢谢。
答案 0 :(得分:0)
我可能误解了你的问题。你能不能将函数调用绑定到你所指的特定用户交互?
IE:如果交互是他们点击按钮然后将其绑定到该元素的onclick。 在jQuery中将是
$('#ELEMENTID').click(window_on_load_function);
答案 1 :(得分:0)
您需要找到responders
对象的存储window
,这些对象由prototype.js按以下方式分配(请参阅prototype.js 1.7,event.js line 774):
function observeStandardEvent(element, eventName, responder) {
var actualEventName = getDOMEventName(eventName);
if (element.addEventListener) {
element.addEventListener(actualEventName, responder, false);
} else {
element.attachEvent('on' + actualEventName, responder);
}
}
因此,prototype.js不会将responders
存储在某个地方的变量上,而只是将它们分配给element
- 在这种情况下为window
。
可悲的是,prototype.js没有jQuerys click
这样的东西(正如isick所建议的那样)。但是还有很多其他可用的解决方案,你应该看一下相关的问题“Trigger an event with Prototype”。
特别是关于Gregs的回答。
使用他的
Element.triggerEvent(window, 'load')
应该可以胜任。另一种(甚至更清洁的)解决方案是使用原型 Event.fire
Gregs没有回答,明显的Event.fire
也无法在window
上完成工作!
但是 balupton 在他的问题Binding and triggering native and custom events in Prototype上有一个自定义构建的解决方案,他发布了 gist ,这似乎工作得很好!
我做了一个(脏的) jsfiddle ,证明了它的可能性。它虽然有点开始。