iframe的onload事件没有在firefox中触发(与ASP.NET文件上传有关)

时间:2009-06-28 06:44:05

标签: asp.net javascript jquery firefox

主页:

<iframe src="/files/new" onload="alert('onload');"></iframe>

并在iframe内部,/ files / new渲染:

<form action="/files/create" method="post" enctype="multipart/form-data" >
    <input type="file" name="file1" size="28" />
    <input type="submit" value="submit" value="Submit" />
</form>

如果我提交文件,iframe的onload事件会按预期触发。 但是,如果我提交的大文件大于web.config中httpRuntime的maxRequestLength中指定的值,则iframe的onload事件不会触发(仅在firefox中(我使用v3.0.11测试过).IE和Google Chrome正常触发onload事件)。

我正在使用jQuery的ajaxSubmit上传文件,而ajaxSubmit在内部使用iframe并监听onload事件以通知成功或失败。因此,如果我上传一个大文件,则在firefox中调用任何回调,我无法知道它是成功还是失败。

3 个答案:

答案 0 :(得分:1)

我经常遇到这样的问题,所以我希望用另一种方式给猫换皮。而不是使用onload,是否可以在框架中包含一些东西来引用DOM的外部部分?

例如,您是否可以简单地将变量设置为主父框架window.parent.uploadComplete的一部分,然后使用计时器查看上传完成变量的状态?

它不如onload的触发器有效,但有时这是跨浏览器兼容性的牺牲。

答案 1 :(得分:1)

如果您希望旧版浏览器在文档加载到iframe后执行某些操作,则可以在该文档中包含一个onload处理程序。

然后,文档可以使用“parent”关键字引用包含文档。

这可以解决您的问题。

答案 2 :(得分:1)

相关的事情:

不要给你正在调用的函数onload名称'onload'。

<body onload="onload();">

这适用于IE,但会导致FF无限递归。