表单提交 – IE访问被拒绝 – 相同的域名
SCRIPT5: Access denied jquery.min.js, line 3 char 3769
我只是在IE中通过简单的表单提交这个错误
$("#icon_upl").click(function(){ //icon_upl is button which open dialog $("[name=icon]").click(); }); $("[name=icon]").change(function() { //icon is hidden file input $("[name=upload_icon]").submit(); });
我将该表单发送到位于同一域的隐藏iframe。
提交输入没有帮助
如果我尝试发送另一种工作正常的表格,我不会得到它
如果您通过JS触发选择文件对话框,那么在提交表单时您将收到拒绝访问错误。 IE不允许这样做。 您将不得不要求用户直接单击输入类型文件
更多细节请访问https://github.com/valums/file-uploader/issues/118#issuecomment-1387612
您可以尝试通过http://www.quirksmode.org/dom/inputfile.html设置输入类型文件的样式
我有类似的HTML和jQuery代码,遇到了同样的问题(即’访问被拒绝。’Internet Explorer中的JavaScript错误),我设法通过从这个 (伟大的)答案中指出来解决。
在你的实例中:
-
将#icon_upl
/
更改为
并通过将其上的
for
属性设置for
指向元素来使用标记的辅助function。
这有效地使您的
click()
事件处理程序变得多余。 但是,单击Firefox中的似乎不会触发文件
对话框,因此如果浏览器是基于Mozilla的,则需要执行浏览器测试并仍然使用
click()
事件处理程序。 -
为了使其工作,您需要确保文件
不会被隐藏,方法是将其位置设置为绝对位置并将其移出屏幕。
我找到了另一种方法来做这个…我已经进行了测试,我发现它在2或3次点击提交按钮后工作。
我尝试了一些解决方案但是我自己发现了这个问题。 这仅适用于ie。
请注意我不使用jquery提交方法,因为他们处理错误。
function Submit() { try { $('#FormName')[0].submit(); } catch (e) { setTimeout(function () { Submit(); }, 50); } }
PS。 抱歉我的英语不好,这不是我的第一语言。
您可以在隐藏的输入字段上触发直接事件,因为您无法捕获它。 可以将事件与它绑定并通过另一个触发它。
例如:
// binding event to hidden field $('input[name=icon]:hidden').on('click', function() { alert('Hidden triggered'); }); // some button/ or else // some_target is any valid selector you can use $('some_target').on('click', function() { $('input[name=icon]:hidden').click(); // triggering click on hidden field will alert 'Hidden triggered' });
注意:但是从你的post中不清楚你是否已经有过这样的事情。
这似乎是不可能的
- 您无法读取元素的“值”,因为它包含文件名。
- 您无法通过JS启动文件选择菜单。
- 您无法通过JS触发文件上传器控件的提交。
来自IE8的访问被拒绝错误