Выполнение кода букмарклета по завершении загрузки страницы - PullRequest
2 голосов
/ 16 февраля 2010

Я пытаюсь настроить букмарклет, который будет переходить на веб-страницу, вводить некоторые данные для входа, а затем автоматически нажимать кнопку «Вход в систему» ​​для меня. Моя проблема в том, что если я просто захожу на страницу и затем последовательно вводю информацию для входа в систему, сценарий обычно завершает выполнение до загрузки элементов формы. Итак, мне нужен какой-то способ заставить скрипт ждать загрузки страницы, прежде чем вводить мою регистрационную информацию в форму. До сих пор я пробовал несколько подходов, и ни один из них не сработал.

Например:

javascript:window.location = "http://www.msn.com";
window.onload=function(){alert("Page Loaded");};

Диалог предупреждения никогда не появляется. Я также пытался использовать функцию, которую я периодически вызываю с помощью window.setTimeout, но она тоже не работает:

javascript:function doLogin() {
    if (document.getElementsByName("login").length > 0) {
        document.getElementsByName("login")[0].value = "myUserName";
    }
    else {
        window.setTimeout(doLogin,100);
    }
}
window.location="http://my.web.page";
doLogin();

Еще раз, информация для входа никогда не вводится. Кто-нибудь знает, как я мог это сделать?

1 Ответ

3 голосов
/ 17 февраля 2010

Я думаю, что проблема в том, что как только вы меняете расположение окна (кстати, оно должно быть window.location.href = 'http://www.msn.com';, поскольку location на самом деле является объектом), остальная часть вашего JavaScript стирается.

Возможно, вам потребуется поместить JavaScript в скрытый фрейм (или iframe) и открыть целевой сайт в видимом фрейме (или iframe). Затем вы можете манипулировать содержимым страницы из скрытого (i) фрейма.

Отказ от ответственности: Я не проверял это, поэтому я не совсем уверен, что это будет работать.

...