gpt4 book ai didi

c# - 从 onchange 触发 .click() 时,IE9 上出现 "SCRIPT5 Access is denied"错误

转载 作者:行者123 更新时间:2023-11-28 08:35:36 30 4
gpt4 key购买 nike

我们希望减少用户在我们的网站上上传文件所需的步骤;所以我们使用 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 中,文件上传加载完毕并且用户选择了文件后;我收到“SCRIPT5 访问被拒绝”错误,而不是 OnChange 工作。我尝试过设置任意超时,设置间隔来检查是否给出文件无济于事。

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

还有人解决这个问题吗?或者我是否绝对有必要为 IE 用户提供一个按钮?

最佳答案

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

为了论证,我能够使用您的代码在 change 处理程序中进行提交,但它在我单击浏览 按钮我自己。我什至在 $(document).ready 方法中为由 change 处理程序设置的变量设置了轮询,该变量指示应触发提交 - 这也不起作用.

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

  1. 设置控件的样式,使其位于按钮后面。您在问题中提到了这一点,但罗马斯在这里提供的答案In JavaScript can I make a "click" event fire programmatically for a file input element?事实上确实有效(我在 IE9、Chrome v23 和 FF v15 中尝试过)。
  2. 使用基于 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

关于c# - 从 onchange 触发 .click() 时,IE9 上出现 "SCRIPT5 Access is denied"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21251117/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com