HTML输入类型= Google Chrome中未显示弹出窗口的“文件”



我对Google Chrome中的HTML标签<input type="file" />有问题。

"浏览"按钮显示在页面上,如预期的那样,但是当我单击它以选择文件时,浏览器的弹出对话框窗口根本不打开。

i've测试了我的表格和Firefox,并且工作正确。有什么想法是怎么了,我该如何解决?

这也是代码:

<form action="" method="post" accept-charset="utf-8" enctype="multipart/form-data">
<label for="imgfile">File input</label>
<input type="file" name="imgfile" />

这在Chrome V88.0上发生在我身上,我尝试了所有内容 - 删除所有事件处理程序,使最简单的形式成为可能,将所有其他HTML和JS删除从页面上 - 单击"选择文件"时,文件选择对话框仍不会出现。按钮。

然后我关闭Chrome并重新开放...然后又起作用。

黄金建议:

您是否尝试过将其关闭并再次打开?

在我的情况下,问题如下:

  1. 整个文档具有"点击处理程序"
  2. 在单击"柄"中,代码正在用

    取消所有传播

    返回false;

删除此返回语句解决了解决问题的问题。浏览是因为我去了Codepen并尝试了各种文件上传器。

在我的特定情况下,我几天前运行了Chrome更新,但在更新后未能重新启动Chrome。

导航以帮助&gt;关于Google Chrome,Google告诉我需要重新启动。

重新启动后,浏览器本地文件拾取器开始再次出现。

没有理由在chrome中不应该使用。您是否尝试过将标记复制到您给我们的html文件中并打开的示例中?它可以工作吗?除非有一些第三方插件或扩展名停止它。

可能是您已经在其他地方进行了标记,这引起了这个问题。也许在输入字段上捕获点击事件之前的一层,然后才能使其降低到"浏览"按钮?

我也遇到了相同的问题,它可以在野生动物园中起作用,但不能在镀铬中工作。原来,我只需要更新我的Chrome浏览器即可。显然,如果您的Chrome版本已经过时了两个星期的功能,这已经存在了十多年的休息时间...您知道Google Engineering最好...

输入类型文件不起作用的原因可能有两个。

  1. 文件类型输入样式为可见性:隐藏。隐藏输入使用不透明度:0。
  2. 可能会在文档或父元素上单击事件,或者是拒绝单击输入标签的事件。

我最近也有同样的问题。重新启动Chrome修复了它。转到Chrome://重新启动。我停用了它,重新启动了铬,最终工作。

在我的情况下,供应商CSS正在写默认的CSS来隐藏要显示的输入类型文件:无,如下所示,删除该/覆盖那使浏览以预期的方式工作。希望可以有所帮助,以验证是否从其他地方驱动输入[type ='file']。

//remove the below code
input[type="file"] {
 display: none;
}

我在 window上有一个全球事件侦听器:

window.addEventListener("click", event => {
        event.preventDefault();
        event.stopPropagation();
});

当然,这阻止了我的输入反应。请小心进行preventDefault()

我有一个类似的问题,我藏着 input元素并尝试在用户时触发弹出窗口,单击表格标签。

在我的情况下,标签元素上的for属性与输入的id不匹配。一旦我在标签上更新了for以匹配输入的id弹出窗口效果很好。

简单示例:

  <form>
    <label for="images">Click here to upload your images!</label>
    <input id="images" type="file" accept="images/*" style="display:none;" />
  </form>

我发现很难设置输入本身,因此我隐藏了实际的输入元素,并将标签样式看起来像文件上传输入。

现在,每当有人单击标签元素时,即使输入元素被隐藏了,文件弹出窗口也会出现。

i set event.preventdefault()在AJAX请求中,这就是为什么未以表单数据发送输入值

这对我有用

<input type="file" id="fileProfile2" name="fileProfile2"  accept="image/png,image/jpeg"  >

试图在本地上传2GB文件时(例如Photos Library.photoslibrary

您必须像这样使用

    <form enctype="multipart/form-data">
    .......
    .......
    <label for="imgfile">File input</label>
    <input type="file" name="imgfile" />
    <input type="submit" name="submit" value="submit" />
    </form>

希望它能帮助某人;就我而言,问题是我将event.preventDefault()适用于整个文档,因为我的EventListener适用于整个文档:

function onMouse( event ) {
	event.preventDefault();
	
	// calculate mouse position in normalized device coordinates
	// (-1 to +1) for both components
	mouse.x = ( event.clientX / window.innerWidth ) * 2 - 1;
	mouse.y = - ( event.clientY / window.innerHeight ) * 2 + 1;
	
	mouseEventHandler( event );
	
}
document.addEventListener( 'click', onMouse, false );

我只希望我的自定义事件处理程序适用于一个Div,而不是整个文档,特别是我不希望我的活动处理程序覆盖表单事件,而在另一个Div中设置。因此,我将eventlisteners的范围限制在"可视化范围"div上:

document.getElementByID('visualizationContainer').addEventListener( 'click', onMouse, false );

修复了所有内容。

观察到的症状:"选择文件"按钮(来自输入type = file html tag)不弹出文件选择对话框。同一网页在同一设备上的Firefox(版本68.5.0)上工作。

答案:如果未能选择上传症状的文件,请在Android上使用Firefox。下面的代码确实在Linux Chrome上使用(版本80.0.3987.87)。它还可以在Windows 10 Chrome(版本80.0.3987.122)上使用。这似乎仅适用于Android,并且可能仅适用于某些版本。

硬件:LG-H812Android版本:6.0Chrome版本:80.0.3987.117

代码:

<!DOCTYPE HTML>
<html lang = "en">
    <head>
        <title>t9.php</title>
    </head>
    <body>
        <h1>t9.php</h1>
        <form method='post' enctype='multipart/form-data'>
            <input type='file' name='filename'/><br>
            <br>
            <input type='submit' name='submit' value='submit'/><br>
            <br>
        </form>
    </body>
</html>

最新更新