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">
отправить ввод не помогает
Я не понимаю, если я попытаюсь отправить другую форму, которая отлично работает
Ответы
Ответ 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