Javascript:选择窗口onload函数

时间:2013-11-04 20:25:41

标签: javascript javascript-events prototypejs

我继承的遗留html有很多类型为

的js调用
Event.observe(window, 'load', function() {
    // Various snippets of code 
});

我希望能够根据用户与页面的交互,在已经加载页面之后触发链接到窗口加载事件的所有函数。理想情况下,我会做类似

的事情
window_on_load_function = window.someCommandHere();
window_on_load_function();

有没有办法实现这个目标?我可以使用JQuery,但是没有JQuery的解决方案也会受到赞赏。提前谢谢。

2 个答案:

答案 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 ,证明了它的可能性。它虽然有点开始。