Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.01.2011, 17:58
Новичок на форуме
Отправить личное сообщение для miksoft Посмотреть профиль Найти все сообщения от miksoft
 
Регистрация: 19.01.2011
Сообщений: 5

Как произвести запуск браузера одновременно с логином на сайте?
Общая задача - нужно из своей десктопной программы открыть браузер с определенной страницей, ввести там на форме логин-пароль и выполнить сабмит этой формы. ОС - 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 работает асинхронно и простым объединением этих букмарклетов нужно результата не добиться.
Ответить с цитированием
  #2 (permalink)  
Старый 19.01.2011, 18:29
Профессор
Отправить личное сообщение для Matre Посмотреть профиль Найти все сообщения от Matre
 
Регистрация: 07.01.2011
Сообщений: 582

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


т е документ нужной страницы вам будет так: wnd.document
напр что бы получить первую ссылку из такого док-та использ не document.links[0] а wnd.document.links[0]
принцип понятне наверное
Ответить с цитированием
  #3 (permalink)  
Старый 19.01.2011, 18:36
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,492

Правда хз будет ли всё это работать учитвая всякие там политики безопасности.
Ответить с цитированием
  #4 (permalink)  
Старый 19.01.2011, 19:32
Новичок на форуме
Отправить личное сообщение для miksoft Посмотреть профиль Найти все сообщения от miksoft
 
Регистрация: 19.01.2011
Сообщений: 5

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

Получилось вот так:
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" с красным крестиком. Разрешаю показать нужную страницу, она показывается, но логин не происходит. Повторно запускаю - страница открывается в новой вкладке и логин происходит.
Ответить с цитированием
  #5 (permalink)  
Старый 19.01.2011, 19:36
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Используй void()
Ответить с цитированием
  #6 (permalink)  
Старый 19.01.2011, 19:50
Новичок на форуме
Отправить личное сообщение для miksoft Посмотреть профиль Найти все сообщения от miksoft
 
Регистрация: 19.01.2011
Сообщений: 5

Обернул в 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", хотя ошибки в скобках не вижу.
Ответить с цитированием
  #7 (permalink)  
Старый 19.01.2011, 20:08
Профессор
Отправить личное сообщение для Matre Посмотреть профиль Найти все сообщения от Matre
 
Регистрация: 07.01.2011
Сообщений: 582

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

или же можно просто void 0; добавить в конец и ни чего необорачивать
Ответить с цитированием
  #8 (permalink)  
Старый 19.01.2011, 20:15
Новичок на форуме
Отправить личное сообщение для miksoft Посмотреть профиль Найти все сообщения от miksoft
 
Регистрация: 19.01.2011
Сообщений: 5

Сообщение от Matre
; перед ) дает ошибку,уберите
точки с запятой пробовал убирать по-разному - ничего не меняет.
А вот Опера выдала интересное:
Syntax error at line 1 while loading:
ategory:����������');wnd.onload=function
--------------------^
expected ')', got ';'
тут шрифт уехал, в оригинале стрелка указывает на точку с запятой сразу после window.open(...)
Ответить с цитированием
  #9 (permalink)  
Старый 20.01.2011, 20:21
Новичок на форуме
Отправить личное сообщение для miksoft Посмотреть профиль Найти все сообщения от miksoft
 
Регистрация: 19.01.2011
Сообщений: 5

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

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

Последний раз редактировалось miksoft, 28.01.2011 в 13:47.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Windows Media Player - Как скрыть url потока на сайте mff Элементы интерфейса 6 01.05.2010 03:35
Нужно сделать плавное появление текстового поля как на сайте vkontakte.ru paratrooper1981 Элементы интерфейса 1 23.11.2009 18:24
Как определить находится ли пользователь в данный момент на сайте? PAMAC Общие вопросы Javascript 19 11.10.2009 15:05
Исчезновение окна как на сайте vkontakte vladex jQuery 2 19.08.2009 03:56
Как деактивировать кнопку "закрыть" браузера NavyD Events/DOM/Window 3 26.08.2008 20:40