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 に答える
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 に答える