Как произвести запуск браузера одновременно с логином на сайте?
Общая задача - нужно из своей десктопной программы открыть браузер с определенной страницей, ввести там на форме логин-пароль и выполнить сабмит этой формы. ОС - 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 работает асинхронно и простым объединением этих букмарклетов нужно результата не добиться. |
javascript: wnd = window.open('URL'); wnd.onload = function () { wnd.document.getElementsByName...дальше сами }; т е документ нужной страницы вам будет так: wnd.document напр что бы получить первую ссылку из такого док-та использ не document.links[0] а wnd.document.links[0] принцип понятне наверное |
Правда хз будет ли всё это работать учитвая всякие там политики безопасности.
|
Спасибо за ответы.
Получилось вот так: 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" с красным крестиком. Разрешаю показать нужную страницу, она показывается, но логин не происходит. Повторно запускаю - страница открывается в новой вкладке и логин происходит. |
Используй void()
|
Обернул в 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", хотя ошибки в скобках не вижу. |
; перед ) дает ошибку,уберите
или же можно просто void 0; добавить в конец и ни чего необорачивать |
Цитата:
А вот Опера выдала интересное: Syntax error at line 1 while loading: ategory:����������');wnd.onload=function --------------------^ expected ')', got ';'тут шрифт уехал, в оригинале стрелка указывает на точку с запятой сразу после window.open(...) |
javascript:window.open('http:/***.ru/****');Этот код при первом запуске его в консоли Firebug-а возвращает null. А при последующих запусках "Window about:blank". Неужели так и должно быть? Кстати, в адресной строке FF на него вообще никакой реакции. |
Часовой пояс GMT +3, время: 18:24. |