Form submit - IE запрещен - тот же домен - программирование
Подтвердить что ты не робот

Form submit - IE запрещен - тот же домен

SCRIPT5: Access denied 
jquery.min.js, line 3 char 3769

Я получаю эту ошибку простой формой submit только в 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">

отправить ввод не помогает

Я не понимаю, если я попытаюсь отправить другую форму, которая отлично работает

4b9b3361

Ответ 1

Если вы запускаете диалог выбора файлов через JS, тогда при отправке формы вы получите ошибку отказа в доступе. IE этого не допускает. Вам нужно будет попросить пользователя напрямую нажать на файл типа ввода

Подробнее здесь https://github.com/valums/file-uploader/issues/118#issuecomment-1387612

Вы можете попробовать стилизовать файл типа ввода, хотя http://www.quirksmode.org/dom/inputfile.html

Ответ 2

У меня был похожий код HTML и jQuery и вы столкнулись с той же проблемой (например, "Ошибка доступа". Ошибка JavaScript в Internet Explorer), которую мне удалось решить, взяв указатели из this (отличный).

В вашем случае:

  • Измените #icon_upl <button>/<input> на <label> и воспользуйтесь функциями доступности тегов, установив для него атрибут for, чтобы указать на ваш элемент <input name="icon" type="file">.
    / " >
    Это эффективно делает ваш обработчик событий click() избыточным. Тем не менее, нажатие <label> в Firefox, похоже, не вызывает диалог файла <input>, поэтому вам нужно будет выполнить проверку браузера и все еще иметь обработчик события click(), если браузер основан на Mozilla.

  • Чтобы он работал, вам нужно убедиться, что ваш файл <input> не скрыт, установив его абсолютное положение и перемещая его за пределы экрана.

Ответ 3

Я нашел другой способ сделать это... Я сделал тест, и я нашел его работу после 2 или 3 нажатий кнопки отправки.

Я попробовал какое-то решение, но нашел это сам. это только для ie.

note Я не использую метод отправки jquery, потому что они обрабатывают ошибку.

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

пс. извините за мой плохой английский, это не мой первый язык.

Ответ 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'
});

Примечание. Но его непонятно из вашего сообщения, что если у вас уже есть что-то подобное или нет.

Ответ 5

Кажется невозможным

  • Вы не можете прочитать "значение" элемента, поскольку оно содержит имя файла.
  • Вы не можете запустить меню выбора файлов через JS.
  • Вы не можете запустить отправку элемента управления загрузчиком файлов через JS.

from получить доступ к ошибке в IE8