Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как произвести запуск браузера одновременно с логином на сайте? (https://javascript.ru/forum/misc/14515-kak-proizvesti-zapusk-brauzera-odnovremenno-s-loginom-na-sajjte.html)

miksoft 19.01.2011 17:58

Как произвести запуск браузера одновременно с логином на сайте?
 
Общая задача - нужно из своей десктопной программы открыть браузер с определенной страницей, ввести там на форме логин-пароль и выполнить сабмит этой формы. ОС - Windows. Браузер, желательно, любой, но сойдет и однобраузерное решение.

Один из вариантов, которые я рассматриваю, заключается в том, чтобы выполнить команду start командной строки Windows с нужным URL-ом/букмарклетом. Простые вещи типа
start javascript:window.resizeTo(1024,768);
вполне работают (правда, срабатывает всегда IE, а не стоящий браузером по-умолчанию FF, но это не критично).

У меня получилось написать два отдельных букмарклета:
для открытия сайта:
javascript:window.open('http://mysite.ru');
для заполнения формы и ее сабмита:
javascript:document.getElementsByName('USER_LOGIN')[0].value = 'login';document.getElementsByName('USER_PASSWORD')[0].value = 'password';document.getElementsByTagName('form')[0].submit();void 0;
По-отдельности из адресной строки браузера они работают.
Подскажите, пожалуйста, как их объединить?
Наиболее сильно осложняет дело тот факт, что window.open работает асинхронно и простым объединением этих букмарклетов нужно результата не добиться.

Matre 19.01.2011 18:29

javascript: wnd = window.open('URL'); wnd.onload = function () { wnd.document.getElementsByName...дальше сами };


т е документ нужной страницы вам будет так: wnd.document
напр что бы получить первую ссылку из такого док-та использ не document.links[0] а wnd.document.links[0]
принцип понятне наверное

Aetae 19.01.2011 18:36

Правда хз будет ли всё это работать учитвая всякие там политики безопасности.

miksoft 19.01.2011 19:32

Спасибо за ответы.

Получилось вот так:
javascript:wnd=window.open('http://mysite.ru');wnd.onload=function(){wnd.document.getElementsByName('USER_LOGIN')[0].value='login';wnd.document.getElementsByName('USER_PASSWORD')[0].value='password';wnd.document.getElementsByTagName('form')[0].submit();};

Если запускать из адресной строке IE6 - открывается новое окно IE, в котором отображается первоначальное состояние сайта mysite.ru, а в исходном окне появляется такой текст:
function(){wnd.document.getElementsByName('USER_LOGIN')[0].value='login';wnd.document.getElementsByName('USER_PASSWORD')[0].value='password';wnd.document.getElementsByTagName('form')[0].submit();}

Если запускать из адресной строки IE8 и FF - вообще никакой реакции не происходит, только курсор прыгает в начало поля.

Если запускать из консоли Firebug-а в FF, то в первый раз говорит о том, что заблокировано всплывающее окно (несмотря на то, что сайт давно стоит в разрешенных), попутно в самой консоли появляется надпись "TypeError: wnd is null" с красным крестиком. Разрешаю показать нужную страницу, она показывается, но логин не происходит. Повторно запускаю - страница открывается в новой вкладке и логин происходит.

Sweet 19.01.2011 19:36

Используй void()

miksoft 19.01.2011 19:50

Обернул в void()
javascript:void(wnd=window.open('http://mysite.ru');wnd.onload=function(){wnd.document.getElementsByName('USER_LOGIN')[0].value='login';wnd.document.getElementsByName('USER_PASSWORD')[0].value='password';wnd.document.getElementsByTagName('form')[0].submit();};);
При запуске в адресной строке в любом из браузеров никакой реакции.
В консоли Firebug-а вижу "SyntaxError: missing ) in parenthetical", хотя ошибки в скобках не вижу.

Matre 19.01.2011 20:08

; перед ) дает ошибку,уберите

или же можно просто void 0; добавить в конец и ни чего необорачивать

miksoft 19.01.2011 20:15

Цитата:

Сообщение от Matre
; перед ) дает ошибку,уберите

точки с запятой пробовал убирать по-разному - ничего не меняет.
А вот Опера выдала интересное:
Syntax error at line 1 while loading:
ategory:����������');wnd.onload=function
--------------------^
expected ')', got ';'
тут шрифт уехал, в оригинале стрелка указывает на точку с запятой сразу после window.open(...)

miksoft 20.01.2011 20:21

javascript:window.open('http:/***.ru/****');
Этот код при первом запуске его в консоли Firebug-а возвращает null. А при последующих запусках "Window about:blank". Неужели так и должно быть?

Кстати, в адресной строке FF на него вообще никакой реакции.


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