Javascript-форум (https://javascript.ru/forum/)
-   Internet Explorer (https://javascript.ru/forum/css-html-internet-explorer/)
-   -   Нажать на кнопку JS (https://javascript.ru/forum/css-html-internet-explorer/28990-nazhat-na-knopku-js.html)

eropov 10.06.2012 05:58

Нажать на кнопку JS
 
Здравтсвуйте. Есть форма сайта(https://target.mail.ru/ads/create/). Помогите нажать на кнопку "Загрузить", в JS полный ноль, пробовал нажимать на AutoIT получается, но скрипт зависает, после чего не возможны дальнейшие действия. Нет тега формы, только class кнопки.

bot87 10.06.2012 08:49

кнопка.click() или кнопка .submit()?:blink:

eropov 10.06.2012 09:01

Я не понял, что вы имели в виду.
На Autiit я обращался так:
Код:

$oIE = _IECreate("https://target.mail.ru/ads/create/", 1, 1, 1);Получаем обьект IE
$oSubts = _IETagNameGetCollection($oIE, 'input');Получаем обьект кнопку по тегу input
For $oSubt In $oSubts
        If $oSubt.classname = 'image_upload_0' Then;Если класс кнопки верный
                $oSubt.click();Сдесь мы нажимаем на кнопку, появляется окно для выбора картинки и
мы зависаем на этом месте. Думаю это поток, потому что если закрыть появившееся окно, то зависание уходит
        EndIf
Next

Если вам нужна структура html, можете ее посмотреть, пройдя по вышеописанной ссылке.

lord2kim 10.06.2012 10:02

для клика на кнопку программно используются события click() или submit() для формы
document.getElementsByClassName("класс кнопки").click();

или
document.getElementById("идентификатор формы").submit(); // если кнопка имеет type="submit"

реализация метода getElementsByClassName() для IE
if (typeof document.getElementsByClassName == 'undefined') {
	document.getElementsByClassName = function(classname) {
		var all = document.all,
		elements = [],
		regexpr = new RegExp('\\b'+classname+'\\b','ig');
		for(var x=0; x<all.length; x++) if (all[x].className)
		if (all[x].className.search(regexpr)!=-1) elements[elements.length] = all[x];
		return elements;
	}
}

eropov 10.06.2012 10:57

lord2kim
Скажите как мне запустить код, чтобы он отработал на нужной форме в браузере IE.

lord2kim 10.06.2012 14:54

Цитата:

Сообщение от eropov (Сообщение 180515)
lord2kim
Скажите как мне запустить код, чтобы он отработал на нужной форме в браузере IE.

если это кнопка type="submit", то можно через форму
document.getElementById("идентификатор_формы").submit();
//или
document.forms.(имя_формы).submit();

если это просто кнопка и у нее есть только class, и такой class только у одного элемента на странице, то добавляете в начале страницы реализацию метода getElementsByClassName() для IE и
document.getElementsByClassName("имя_класса")[0].click();

eropov 13.06.2012 19:44

Скрипт не работает в IE выдает ошибку:

Цитата:

Сообщение: Объект не поддерживает это свойство или метод
Строка: 1
Символ: 23
Код: 0
URI-код: https://target.mail.ru/ads/create/
Использую так:
"setTimeout(function(){document.getElementByName("image_file").Submit();},1)"
"setTimeout(function(){document.getElementByName('image_file').Click();},1)"

lord2kim 13.06.2012 21:31

Цитата:

Сообщение от eropov (Сообщение 181191)
Скрипт не работает в IE выдает ошибку:



Использую так:
"setTimeout(function(){document.getElementByName("image_file").Submit();},1)"
"setTimeout(function(){document.getElementByName('image_file').Click();},1)"

методы с маленьких букв начинаются вроде...а также getElementsByName пишется с буквой s (все методы getElements, кроме getElementById пишутся с буковкой s) + необходимо указать № элемента, т.к. getElementsByName это коллекция элементов на странице с аттрибутом name
setTimeout(function() { document.getElementsByName("image_file")[n].submit(); },1);
setTimeout(function() { document.getElementsByName('image_file')[n].click(); },1)

где n - № элемента на странице (нумерация элементов начинается с 0)


Часовой пояс GMT +3, время: 05:15.