Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript在Chrome的iframe中触发文件输入_Javascript_Html_Google Chrome_File Upload - Fatal编程技术网

使用javascript在Chrome的iframe中触发文件输入

使用javascript在Chrome的iframe中触发文件输入,javascript,html,google-chrome,file-upload,Javascript,Html,Google Chrome,File Upload,我正试图解决我公司网络框架中难看的浏览器特定上传按钮的问题 我创建的是一个隐藏的iframe,其中包含一个表单。iframe的外部是一个“选择文件”按钮。该按钮从iframe检索输入元素,并对其调用“click()” 单击会在IE和FF中打开文件选择对话框,但不会在Chrome中打开。在javascript函数中从iframe中调用“click()”对Chrome也不起作用 一些示例代码: fileuploadtest.html: <div id="button" style="backg

我正试图解决我公司网络框架中难看的浏览器特定上传按钮的问题

我创建的是一个隐藏的iframe,其中包含一个表单。iframe的外部是一个“选择文件”按钮。该按钮从iframe检索输入元素,并对其调用“click()”

单击会在IE和FF中打开文件选择对话框,但不会在Chrome中打开。在javascript函数中从iframe中调用“click()”对Chrome也不起作用

一些示例代码:

fileuploadtest.html:

<div id="button" style="background-color:red; height:50px; width:200px;" onclick="clicky()">Browse files</div>
<iframe id="frame" src="fileupload.html" style="display:none"></iframe>

<script type="text/javascript">
    function clicky() {
        var iframe = document.getElementById("frame");
        var innerDoc = iframe.contentDocument || iframe.contentWindow.document;
        innerDoc.getElementById("input").click();
    };   
</script>
浏览文件
函数clicky(){
var iframe=document.getElementById(“框架”);
var innerDoc=iframe.contentDocument | | iframe.contentWindow.document;
innerDoc.getElementById(“输入”)。单击();
};   
fileupload.html:

<form>
    <div><input type="file" id="input" multiple/></div>
</form>

通过删除iframe并将表单放在第一页中,Chrome可以像我所希望的那样打开文件选择器对话框。但是,我必须在我们的web应用程序中使用iframe,以便我可以单独提交它

删除“显示:无”无效。当一个“onclick”属性被添加到输入元素时,它会被Chrome的“click()”事件触发


为什么Chrome在对iframe内的输入调用“click()”时不打开文件选择器对话框

Chrome将每个文件路径视为不同的原点。当我在服务器上托管您的示例时,它在Chrome中运行良好。您也可以使用“-allow file access from files”(允许从文件访问文件)作为参数来启动Chrome以避免此问题。

如果您安装了Python
Python-m SimpleHTTPServer
是解决此问题的一个很好的替代方法。我们的问题似乎是由于我们没有从单击事件调用“clicky()”方法造成的,但是从一个单独的浏览器事件。在本例中没有显示,但我们实际的应用程序代码不是复制并粘贴到这里的选项。我有同样的问题:(你能给我一个关于如何修理它的提示吗?