Использование Javascript для открытия новой страницы и заполнения ее значениями формы


Я использую 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 3

2 ответа:

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

Я не использую 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();
     } 
    }

Щелкнув по этой ссылке вы перейдете к регистрации.страница ASPX. После того, как поле Имя пользователя будет доступно на загруженной странице, нажав на ту же ссылку снова заполнит форму и отправить.

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