【问题标题】:form submit - IE access denied - same domain表单提交 - IE 访问被拒绝 - 相同的域
【发布时间】:2012-05-19 18:31:29
【问题描述】:
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。

<iframe id="upload_target" name="upload_target" src="#" style="width:0;height:0;display:none;"></iframe>
<form name="upload_icon" action="upload_icon.php" method="post" enctype="multipart/form-data" target="upload_target">

提交输入没有帮助

我不明白,因为如果我尝试发送另一个可以正常工作的表单

【问题讨论】:

标签: javascript jquery internet-explorer


【解决方案1】:

如果您是通过 JS 触发选择文件对话框,那么您在提交表单时会收到拒绝访问错误。 IE 不允许这样做。您必须要求用户直接单击输入类型文件

更多细节在这里 https://github.com/valums/file-uploader/issues/118#issuecomment-1387612

您可以尝试设置输入类型文件的样式 http://www.quirksmode.org/dom/inputfile.html

【讨论】:

【解决方案2】:

我有类似的 HTML 和 jQuery 代码并遇到了同样的问题(即“访问被拒绝。”Internet Explorer 中的 JavaScript 错误),我设法通过从 this(很好)答案中获取指针来解决。

在你的例子中:

  1. 将#icon_upl &lt;button&gt;/&lt;input&gt; 更改为&lt;label&gt; 并通过将其上的for 属性设置为指向您的&lt;input name="icon" type="file"&gt; 元素来利用标签的辅助功能。

    这有效地使您的click() 事件处理程序变得多余。但是,在 Firefox 中单击 &lt;label&gt; 似乎不会触发文件 &lt;input&gt; 对话框,因此如果浏览器是基于 Mozilla 的,您需要执行浏览器测试并仍然拥有 click() 事件处理程序。

  2. 为了使其正常工作,您需要通过将文件 &lt;input&gt; 设置为绝对位置并将其移出屏幕来确保其未被隐藏。

【讨论】:

  • 工作就像一个魅力!谢谢!
  • 很棒的解决方案。我现在在想为什么我以前没有想到它:)
  • 有效!!如果您的代码中有输入文件点击事件,请记住删除它。
  • 非常聪明。谢谢。
【解决方案3】:

我找到了另一种方法来做到这一点...... 我进行了测试,我发现它在单击提交按钮 2 或 3 次后工作。

我尝试了一些解决方案,但我自己发现了这个。 这仅适用于 ie。

请注意,我不使用 jquery 提交方法,因为它们会处理错误。

function Submit() {
    try {
        $('#FormName')[0].submit();
    } catch (e) {
        setTimeout(function () { Submit(); }, 50);
    }
}

ps。抱歉我的英语不好,这不是我的母语。

【讨论】:

  • 最好使用 setInterval,因为 input[type=submit] 上的触发器需要触发两次。
  • @Warface 如果你使用 setInterval,你如何确保它不会重复提交?正如我所说,它可以工作 2 或 3 次。在所有浏览器中都不一样。 setTimeout 只是为了在抛出异常时延迟 submin。
【解决方案4】:

您可以在隐藏的输入字段上触发直接事件,因为您无法捕捉到它。可以绑定事件并通过另一个触发。

例如:

// 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'
});

注意:但从你的帖子中不清楚你是否已经有这样的东西。

【讨论】:

  • 我还有别的东西 - 按钮上传 - onclick{fileinput.click()}
【解决方案5】:

这似乎是不可能的

  1. 您无法读取元素的“值”,因为它包含文件名。
  2. 您无法通过 JS 启动文件选择菜单。
  3. 您无法通过 JS 触发文件上传器控件的提交。

来自getting access is denied error on IE8

【讨论】:

    【解决方案6】:
        //Access Denied Issues is usually for IE.
        
       var lblTrigger= document.getElementById('lblTrigger');
       lblTrigger.onclick = function(){
             var form = document.getElementById('form1');
             form.fxSubmit();
       }
    
    
        var form = document.getElementById('form1'); //form with upload control
        var upctrl = document.getElementById('file_1'); //file upload control
        
        form.fxSubmit = function() {
            var upctrl = document.getElementById('file_1'); //file upload control
            if (upctrl.files){
                var form = document.getElementById('form1');
                form.submit();
            }else{              
                document.body.submit = true;
            }
       }
        
        function fxSubmit(){            
            if (document.body.submit){
                var form = document.getElementById('form1');
                setTimeout(function(){fxSubmit()},50);
                form.submit();
                return;
            }
            setTimeout(function(){fxSubmit()},1000);
        }
        
        setTimeout(function(){fxSubmit()},1000);
    

    【讨论】:

    • 好吧。那是一些代码。我不知道它应该与这个将近十年的问题有什么关系。 (即使第一行也失败了,lblTrigger 不存在于 HTML 中)答案最好用清晰的英文解释,描述他们解决问题的方式和原因。
    猜你喜欢
    • 2012-10-06
    • 1970-01-01
    • 2012-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 2012-01-01
    • 2012-05-15
    相关资源
    最近更新 更多