如何在IE中的文档上触发"onload"事件

Eri*_*ier 7 javascript events internet-explorer unit-testing document

我目前正在为Javascript方法开发单元测试,以检测文档的准备情况.此代码已经处于框架级别,因此请避免在jQuery或其他库中实现此代码.

我已使用以下代码成功模拟了'readystatechange'更改事件:

var event;
event = document.createEventObject();
event.type = 'readystatechange';
document.fireEvent('onreadystatechange',event);
Run Code Online (Sandbox Code Playgroud)

我没有为'load'事件做同样的事情.以下代码导致IE7中的无效参数错误,在最后一行调用fireEvent抛出:

event = document.createEventObject();
event.type = 'load';
document.fireEvent('onload',event);
Run Code Online (Sandbox Code Playgroud)

有没有人这样做过,或者之前没有这样做过?我也对任何以不同方式解雇事件的建议感兴趣.

编辑:按照Crescent Fresh的建议,我将代码更改为:

event = document.createEventObject();
event.type = 'load';
document.body.fireEvent('onload',event);
Run Code Online (Sandbox Code Playgroud)

没有更多的错误,但'onload'的监听器不会触发.这是我配置它的方式:

document.attachEvent('onload',listener);
Run Code Online (Sandbox Code Playgroud)

Chr*_*oph 4

根据MSDN 上的此页面onload,没有document.

您想要window.onloaddocument.body.onload。这些在 IE 中是相同的:由于历史原因,<body onload="...">实际上设置了window.onload,因此 MS 决定为 制作document.body.onload一个别名window.onload

问题是 - 正如埃里克在评论中提到的 - 似乎没有办法手动触发窗口事件,这意味着埃里克的问题可能没有解决方案。