0

我继承的遗留 html 有许多类型的 js 调用

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

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

window_on_load_function = window.someCommandHere();
window_on_load_function();

有没有办法做到这一点?我可以使用 JQuery,但也可以使用没有 JQuery 的解决方案。

4

2 回答 2

0

我可能误解了你的问题。您不能将函数调用绑定到您所指的特定用户交互吗?

IE:如果交互是他们单击按钮,则将其绑定到该元素的 onclick。在 jQuery 中将是

$('#ELEMENTID').click(window_on_load_function);
于 2013-11-04T20:33:07.070 回答
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 所建议的那样)。但是还有很多其他可用的解决方案,您应该查看相关问题“使用 Prototype 触发事件”。

尤其是在 Gregs 的回答中。使用他Element.triggerEvent(window, 'load')应该做的工作。 另一个(可能甚至更清洁)的解决方案是使用原型Event.fire
Gregs 的回答和明显的Event.fire都不会完成这项工作window

但是balupton在他的问题Binding and triggering native and custom events in Prototype 中有一个定制的解决方案,他发布了一个gist似乎运行良好的问题!

我做了一个(脏)jsfiddle,证明了它的可能性。不过,它有点像一个开端。

于 2013-11-04T20:52:53.953 回答