Javascript 单击文件上载按钮后延迟?

Javascript 单击文件上载按钮后延迟?,javascript,jquery,browser-cache,Javascript,Jquery,Browser Cache,当我单击选择要上载的文件时,即输入类型=文件,从我单击按钮并选择文件到在按钮旁边显示所选文件之间存在延迟。浏览器是否正在尝试将文件加载到浏览器??为什么要耽搁呢 接下来,如何显示“请稍候…”。。选择文件后立即发送消息。我尝试了各种JQ选项,所有这些选项似乎都是在初始延迟后触发的,正如我所说的,可能是浏览器正在尝试加载文件,但我不确定是否要用加载程序小部件/消息来覆盖延迟 请提供帮助。方法是使用按钮触发元素,点击输入类型=文件同级打开文件对话框;将加载小部件附加到文档中;利用.one将焦点事件附加

当我单击选择要上载的文件时,即输入类型=文件,从我单击按钮并选择文件到在按钮旁边显示所选文件之间存在延迟。浏览器是否正在尝试将文件加载到浏览器??为什么要耽搁呢

接下来,如何显示“请稍候…”。。选择文件后立即发送消息。我尝试了各种JQ选项,所有这些选项似乎都是在初始延迟后触发的,正如我所说的,可能是浏览器正在尝试加载文件,但我不确定是否要用加载程序小部件/消息来覆盖延迟

请提供帮助。

方法是使用按钮触发元素,点击输入类型=文件同级打开文件对话框;将加载小部件附加到文档中;利用.one将焦点事件附加到$window,以便在用户选择文件或关闭“打开文件”对话框后窗口重新获得焦点时删除加载小部件

$button.clickfunction{ 变量微调器=$ 选择文件
我将guest271314的方法与另一种方法相结合,以获得结果。我可以说,如果没有他的帮助,我不可能走到这一步。on load on image(图像加载)是按住加载程序,直到图像完全加载

方法是

enter code here
$('#preview').bind("DOMSubtreeModified",function(){
    $('#preview').find('img')
        .on('load', function() { $.mobile.loading('hide'); });
});

这就是我要做的: HTML:


你能创建一个stacksnippets来演示延迟吗?延迟的持续时间是多少?延迟可能是1/4秒到2秒或更多,这取决于我尝试选择的文件的大小。我尝试了多台机器,看起来像是标准延迟。从我选择文件的时间到选择文件旁边显示的文件名,这个示例是针对chrome的。如果它是标准的,或者浏览器正在尝试读取该文件,我可以延迟,但如何在浏览器开始读取文件之前拦截以显示“加载程序”小部件。所有JQ事件都是在浏览器刷新文件后发生的。您可以使用更改事件显示加载程序小部件,然后在使用定义FileList对象后删除小部件在change handler中。文件的内容长度是多少?我正在使用大约500K到2M的文件进行测试。我尝试了$input[type=file]。changefunction{并在延迟后触发。远程执行我需要的唯一操作是使用$logox.ClickFunction{e.preventDefault;$input[type=file]。triggerclick;};并传递控件进行更改,上面的问题是,如果我在触发之前使用$.mobile.loader'show',并且如果用户取消上载文件选择器窗口,则我无法取消它。无论是哪种方式,我都很好奇浏览器发生了什么这很接近PS:非常感谢您花费宝贵的时间进行响应,我真的很感激。在代码片段中,1用户选择选择文件2微调器启动3用户选择文件4微调器停止5延迟发生5文件准备上载。微调器在步骤4停止,而不是在步骤5之后。任何情况下,此解决方案都解决了如果用户未选择文件如何停止的问题。可能需要有条件的关于分离的语句,如果未选择文件,则在上载etcc..之后分离else detachcomplete@RaviP是的,您可以使用.detach at change event for input type=file元素。使用条件at if for expected result谢谢,我可能错了,但是更改事件在延迟之后发生:我将播放,看看是否可以将ch您建议的窗口事件中的ange事件。
<input class="fileUploadBtn" name="image" type="file"/>
$(".fileUploadBtn").click(function() {
//Your code here to show please wait
$('input[type=file]').change(function(e){
// Your code here to hide please wait
});