Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > программный submit формы


Автор: serg244 24.3.2010, 17:46
Добрый день. 

Преамбула:

http://noir.org.ua/searchForm/

На странице:
1) поле ввода и кнопка Find - это флеш. 
2) также есть html-форма, скрытая через display: none

После нажатия на кнопку Find, флеш через ExternalInterface (это стандартный класс Flash Player-а, который позволяет из флеша вызывать JavaScript-функции контейнера, в который он помещён) вызывает JavaScript-функцию

Код

function submitForm(str)
{
    var form = document.getElementById("myForm");
    form.elements['srcKeys'].value = str;
    form.submit();
}


и передаёт в неё введённое значение из поля ввода внутри флеша.
Смысл этого всего устройства - нужно во флеш сайте вводить в поле ввода некоторое слово, после чего должна открыться страница сайта visualphotos.com (это фотосток) с результатами поиска по введённому слову.

Firefox и IE - переходы происходят нормально.
Opera - не производит переход, вместо этого появляется окно с сообщением, что данная страница пытается открыть всплывающее окно, и вопросом - что делать.
Chrome - переход происходит только один раз, после чего переходов не осуществляется.

В результате экспериментов определил, что это происходит из-за программного вызова метода submit формы без явного действия пользователя. В частности, если "повешать" вызов той же функции submitForm на событие onclick изображения в html-странице, то работает нормально.

Вопрос:

Как добиться корректного поведения в Opera и Chrome? И возможно ли?

Спасибо.

Автор: IDVsbruck 24.3.2010, 18:11
Вот эта строка
Код
form.elements['srcKeys'].value = str;

мне что-то не очень нравится в плане кроссбраузерности.
Для гарантии пропиши
Код
document.getElementById("srcKeys").value = str;

Автор: serg244 24.3.2010, 18:18
Прописать то я прописал, но это не решит проблему smile
Но спасибо, буду знать на будущее

Автор: IDVsbruck 24.3.2010, 18:21
У, блин, если честно, то не дочитал до конца вопрос smile.
Нельзя. Потому что программный. Странно, что ИЕ не среагировал так же, как Опера.

Автор: serg244 24.3.2010, 18:25
Понятно. Спасибо.

Автор: IgorIV 24.3.2010, 20:16
Opera 10.10
Работает, как ни странно smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)