2014-02-14 2 views
0

На родительской странице моего сайта я использую iframe (с кнопкой display: none submit), содержащую форму загрузки файла для позволяют пользователям загружать изображения профиля без перезагрузки родительской страницы. Метод работает в Chrome и FF с любой из следующих функций («NoReloadiframe» - это идентификатор iframe, а «iframePicButton» - это идентификатор дисплея: ни одна кнопка отправки в форме загрузки изображения скрытого iframe):Использование кнопки click() в скрытой кнопке отправки внутри iframe работает в FF и Chrome, но не в IE и Opera

function HiddenPicButton() { 
    document.getElementById('NoReloadiframe').contentWindow.document.getElementById('iframePicButton').click(); 
} 

function HiddenPicButton() { 
    window.frames['NoReloadiframe'].contentWindow.document.getElementById('iframePicButton').click(); 
} 

и вот код формы внутри фрейма:

<form action="#" enctype="multipart/form-data" method="post" id="HiddenUserPicForm"> 
    <button type="submit" name="iframepicbutton" id="iframePicButton" style="display:none">  
    </button> 
    <input type="file" name="ifrpic" id="ifrfile"> 
</form> 

вкратце, нажав на кнопку загрузки файлов на родительской странице вызывает HiddenPicButton(), который нажимает на скрытую кнопку внутри фрейма а загрузка файлов без перезагрузки родительской страницы.

Однако скрытая нажатие кнопки не происходит ни в Opera, ни в IE (хром и FF работают точно так, как предполагалось). Любые указатели на то, как исправить это? В качестве резервной копии я вернусь обратно к методу перезагрузки страницы, поскольку я изначально имел или пытаюсь использовать Javascript для обнаружения браузера (с использованием метода, показанного здесь: Browser detection in JavaScript?) пользователь просматривает и скрывает кнопку отправки iframe для IE и Opera используя функцию onLoad.

+1

Почему не только называют 'представить()' на форме? – Ryan

+0

Попробуем это ... спасибо за предложение –

ответ

2

Try:

function HiddenPicButton() { 
    document.getElementById('NoReloadiframe').contentWindow.document.forms[0].submit(); 
} 
+0

Спасибо за предложение ... форма не отправляется в Chrome сейчас ... Я сделаю еще немного работы над этим. –

+0

Что произойдет, если вы установите правильный URL-адрес в качестве формы атрибут действия? – Igor

+0

Извините ... Я только что проверил мою первую функцию ... на самом деле работает во всех 4 браузерах ... не знаю, почему я нажал кнопку «Загрузить» 20 раз, и раньше она не работала в Opera и IE ..... вторая функция не работает во всех браузерах. –

Смежные вопросы