Javascript 在iframe中单击不会触发firefox中的文件上载对话框
我有一个有点复杂的场景。 我正在为一个POC做一些研究,最终的目标是在支持IE9的同时跨域上传文件 我的网页上写着: 在以下位置加载iframe: 第二个页面(在iframe中)有一个文件输入元素,正在侦听post消息事件 当在“ui”页面(在第一个域中)上单击一个按钮时,该页面将向iframe发送一条消息,iframe反过来调用如下内容:Javascript 在iframe中单击不会触发firefox中的文件上载对话框,javascript,firefox,iframe,file-upload,postmessage,Javascript,Firefox,Iframe,File Upload,Postmessage,我有一个有点复杂的场景。 我正在为一个POC做一些研究,最终的目标是在支持IE9的同时跨域上传文件 我的网页上写着: 在以下位置加载iframe: 第二个页面(在iframe中)有一个文件输入元素,正在侦听post消息事件 当在“ui”页面(在第一个域中)上单击一个按钮时,该页面将向iframe发送一条消息,iframe反过来调用如下内容: var upload = document.getElementById("fileupload"); upload.click(); 或 这两
var upload = document.getElementById("fileupload");
upload.click();
或
这两个例子在Chrome(37)中都很好地工作,文件上传对话框打开,我可以从我的计算机中选择一个文件
然而,在Firefox(31)中,这不起作用。没有错误或任何东西,但是点击触发没有任何作用。在我刚刚升级到的FF 32中,我收到一条消息说,尽管我允许此域的弹出窗口,但弹出窗口被阻止
顺便说一下,iframe是否隐藏并不重要
这是非常令人沮丧的,因为似乎没有什么我可以做的代码明智的工作围绕它
有人知道如何解决这个问题吗
谢谢 我们可以访问iframe中不同域中的元素吗?不,浏览器禁止跨域访问
var upload = document.getElementById("fileupload");
var evt = document.createEvent("HTMLEvents");
evt.initEvent("click", true, true);
upload.dispatchEvent(evt);