从onchange触发.click()时,IE9上出现“ SCRIPT5访问被拒绝”错误 - c#

我们希望减少用户在我们的网站上上传文件所需的步骤;因此,我们使用jQuery通过以下标记(简化)打开和回发文件:

<a onclick="$('#uplRegistrationImage').click();">
    Change profile picture
</a>

<!-- Hidden to keep the UI clean -->
<asp:FileUpload ID="uplRegistrationImage" 
                runat="server" 
                ClientIDMode="static"
                Style="display:none"
                onchange="$('#btnSubmitImage').click();"    />

<asp:Button runat="server" 
            ID="btnSubmitImage" 
            ClientIDMode="static" 
            Style="display:none" 
            OnClick="btnSubmitImage_OnClick" 
            UseSubmitBehavior="False" />

这在Firefox和Chrome中绝对可以正常工作;单击链接时打开文件对话框,选择文件时触发回发。

但是,在IE9中,在加载文件上传并且用户选择了文件之后;受到OnChange工作的影响,我收到“ SCRIPT5访问被拒绝”错误。我尝试设置任意超时,设置间隔以检查文件是否无效。

与此相关的还有许多其他问题。但是似乎没有一个好的答案(有人说将文件对话框设置为透明并悬停在按钮后面!)

还有其他人解决吗?还是绝对有必要为IE用户提供一个按钮?

c#参考方案

出于安全原因,您尝试执行的操作是不可能的。 IE9似乎不会允许您以这种方式提交表单,除非它是实际单击鼠标触发它的文件上载控件。

出于参数考虑,我能够使用您的代码在change处理程序中进行提交,但仅当我自己单击Browse按钮时,该方法才有效。我什至在$(document).ready方法中为change处理程序设置的变量设置了轮询,该变量指示应触发提交操作-这也不起作用。

该问题的解决方案似乎是:

设置控件的样式,使其位于按钮后面。您在问题中提到了这一点,但Romas在此处In JavaScript can I make a "click" event fire programmatically for a file input element?所提供的答案确实有效(我在IE9,Chrome v23和FF v15中尝试过)。
使用基于Flash的方法(GMail为此)。我试用了Uploadify演示,它似乎运行得很好。

样式文件上传:

http://www.quirksmode.org/dom/inputfile.html

http://www.shauninman.com/archive/2007/09/10/styling_file_inputs_with_css_and_the_dom

参考文献:

jQuery : simulating a click on a <input type="file" /> doesn't work in Firefox?

IE9 file input triggering using Javascript

getting access is denied error on IE8

当回复有时是一个对象有时是一个数组时,如何在使用改造时解析JSON回复? - java

我正在使用Retrofit来获取JSON答复。这是我实施的一部分-@GET("/api/report/list") Observable<Bills> listBill(@Query("employee_id") String employeeID); 而条例草案类是-public static class…

Mongo汇总 - javascript

我的收藏中有以下文件{ "_id": ObjectId("54490b8104f7142f22ecc97f"), "title": "Sample1", "slug": "samplenews", "cat": …

jQuery DataTable TableTool在IE和Firefox中不起作用 - c#

我在MVC4 ASP.NET Web应用程序中使用Jquery DataTable TableTool。导出到Excel和PDF可以与Chrome完美配合。但是不能在IE和FireFox中使用。我的代码如下 dom: 'T<"clear">lfrtip', tableTools: { "sSwfP…

提交表单后显示模式对话框 - php

提交下载文件后,我有一张表格。我要自动而不是自动下载文件..以显示模态对话框并显示下载链接。<form name="softwareform" id="softwareform" action="../downloadlink.php" method="POST" alig…

如何使用JavaScript乘以文本框值? - c#

<asp:GridView ID="GVFeedType" runat="server" Style="margin-bottom: 6px" BorderColor="#BDBDBD" CssClass="center" Width="500…