Использование Javascript для открытия новой страницы и заполнения там значений формы - PullRequest
3 голосов
/ 15 сентября 2010

Я использую JavaScript в закладке для заполнения элементов формы на веб-сайте:

javascript:var f = document.forms[0];
f.getElementsByTagName('input')[0].value = 'myname';
f.getElementsByTagName('input')[1].value = 'mypassword';
f.getElementsByTagName('input')[2].click

Это работает.Однако я хотел бы создать букмарклет, чтобы он открывал целевую страницу и заполнял там значения;однако кажется, что только страница загружена, другие коды JavaScript не выполняются.Итак, следующее не работает.

javascript:window.location("mywebsite");var f = document.forms[0];
f.getElementsByTagName('input')[0].value = 'myname';
f.getElementsByTagName('input')[1].value = 'mypassword';
f.getElementsByTagName('input')[2].click;

Я также экспериментировал с setTimeout для задержки выполнения моего кода, но это не сработало.

javascript:var f = document.forms[0];setTimeout("f.getElementsByTagName('input')[0].value = 'myname';f.getElementsByTagName('input')[1].value = 'mypassword';f.getElementsByTagName('input')[2].click;",1000);

КакЯ загружаю свой скрипт, как только узнаю, что целевая страница полностью загружена?

Ответы [ 2 ]

8 голосов
/ 15 апреля 2011

Я не использую GreaseMonkey как личное правило для кодирования браузеров, которые не должны его использовать.Букмарклеты - это метод наименьшего общего знаменателя для автоматизации входа в систему, когда ваша система заблокирована и не позволяет устанавливать Greasemonkey, Roboform и т. Д.

Я кодировал много букмарклетов для входа и думал о том, чтовы пытаетесь сделать: добавить сценарий, который выполняется после загрузки страницы.Я пришел на эту страницу в поисках решения, но теперь я рад, что оно не работает.

Подумайте о последствиях этого для безопасности.Если бы можно было отсылать нажатия клавиш на загруженную страницу, он также мог бы прослушивать нажатия клавиш и отправлять их в другое место - очень плохо.

Если вы хотите автоматизировать вход в систему, попробуйте шаблон букмарклета, подобный следующему (удалите разрывы строк):

javascript:
    u='my_username';
    p='my_password';
    l='https://my_server/signon.aspx'; 
    if(location!=l)location=l;
    else{
     g=document.getElementById; 
     ue=(g('username') || g('userid') || g('login_name'));
     if(ue){
      ue.value=u;
      pe=(g('password') || g('pw') || g('pin'));
      pe.value = p;
      b=(g('submit_button') || g('signon_button') || g('login_button'));
      document.close();
      if(b)b.click();
     } 
    }

Если щелкнуть ссылку один раз, вы попадете на страницу signon.aspx.Как только поле имени пользователя будет доступно на загруженной странице, повторное нажатие на ту же ссылку заполнит форму и отправит.

Так что это на один клик больше, чем вы ожидали, но если вы поместите букмарклет на панель инструментов, это вряд ли задержит вас.Удачи!

2 голосов
/ 15 сентября 2010

Greasemonkey встроен в Chrome, похоже, вы пытаетесь изобрести велосипед заново. Установите файл JS, и он запустится при загрузке страницы.

...