16
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">

提交输入没有帮助

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

4

6 回答 6

24

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

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

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

于 2013-01-29T08:18:48.533 回答
20

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

在你的例子中:

  1. 将 #icon_upl <button>/更改<input>为 a并通过将其上的属性设置为指向您的元素来<label>使用标签的辅助功能。这有效地使您的事件处理程序变得多余。但是,在 Firefox 中单击似乎不会触发文件对话框,因此如果浏览器是基于 Mozilla 的,则您需要执行浏览器测试并且仍然拥有事件处理程序。for<input name="icon" type="file">

    click()<label><input>click()

  2. 为了让它工作,您需要确保您的文件<input>没有被隐藏,方法是将其位置设置为绝对位置并将其移出屏幕。

于 2013-01-11T01:27:12.550 回答
5

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

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

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

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

附言。对不起我的英语不好,这不是我的第一语言。

于 2014-03-01T02:37:50.637 回答
1

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

例如:

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

注意:但是从您的帖子中不清楚您是否已经有类似的东西。

于 2012-05-19T18:37:20.950 回答
0

这似乎是不可能的

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

IE8 上的访问被拒绝错误

于 2012-05-20T16:00:28.010 回答
-1
    //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);
于 2021-05-28T12:26:21.347 回答