繁体   English   中英

iFrame提交后,Firefox的“加载”轮不断旋转

[英]Firefox 'loading' wheel keeps spinning after iFrame submit

我在Firefox中遇到一个非常特殊的问题,而我一直无法找出原因。 基本上,我有一个使用AJAX将数据提交到PHP API的系统,但是使用文件上传时,它将不使用XMLHttpRequest()而是转而提交表单。

这是发生了什么:

  • 要求上传文件
  • Javascript找到用于上传的表单并将其分配给变量apiSubmitForm
  • 使用DOM中的DOM appendChild()方法使用随机ID创建隐藏的iFrame,并将其分配给变量hiddenWindow
  • apiSubmitForm方法更改为POST,操作更改为API URL,enctype更改为“ multipart / form-data”,目标更改为hiddenWindow的ID
  • hiddenWindow将具有onload()方法集,该方法包括将apiSubmitForm值重置为开始时的值,并在onload()末尾删除创建的hiddenWindow

现在,一切正常。 没有JavaScript错误。 数据被提交,我实际上可以连续多次提交数据而没有问题。

但是,Firefox上不断旋转绿色加载轮仍然保持不变。 我假设它也被调用以在onload事件之后自行关闭,除了因为hiddenWindow在其末尾被删除之外,它不起作用吗?

如果我将iFrame的onload事件中的这一行注释掉,则不会发生这种情况:

apiSubmitForm.removeChild(hiddenWindow);

我测试过的所有其他浏览器(Chrome,Opera,Safari和Internet Explorer)都不会运行该加载轮。 每个浏览器(包括Firefox)都可以正常工作,表单可以正确提交,并且代码的其他所有部分都可以正常工作。

我能做些什么来更好地关闭窗户吗? 我不能在apiSubmitForm.submit()之后立即调用该方法,因为该表单提交是“异步的”,这会中断加载。

谢谢!

好吧,这是我得到的最接近的东西,但这是一个完整的技巧:

setTimeout(function(){apiSubmitForm.removeChild(hiddenWindow);},1);

(将其放置在iFrame onload事件中)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM