2013-11-06 2 views
0

Итак, я создал букмарклет, чтобы открыть сайт и войти в систему для меня. Я получил его на работу, но он работает только, если я держу Ctrl, когда я нажимаю закладку. может ли кто-нибудь помочь мне исправить проблему, чтобы она работала, даже если я не держу Ctrl?JavaScript Bookmarklet Issue

window.location.assign("https://www.thewebsiteiwant.com"); 
window.onload=doThis; 
function doThis(){ 
    document.getElementsByName("username")[0].value="username"; 
    document.getElementsByName("password")[0].value="password"; 
    var inputs = document.getElementsByTagName("input"); 
    for(var i = 0;i < inputs.length; i++){ 
     if(inputs[i].type === "submit"){ 
      inputs[i].form.submit(); 
     } 
    } 
} 

EDIT:

и да, я знаю, что спасение моего имя пользователя/пароль в закладки огромная проблема безопасности, но если хакер попал в мой рабочий компьютер, последнее, что они будут go for - это мой логин для страницы, содержащей полезную информацию.

EDIT2:

получил его на работу, спасибо @DG за помощь мне мозговой штурм:

javascript: 
var sitexyz = "https://www.thewebsiteiwant.com"; 
if(document.URL == sitexyz){ 
    document.getElementsByName("username")[0].value="username"; 
    document.getElementsByName("password")[0].value="password"; 
    var inputs = document.getElementsByTagName("input"); 
    for(var i = 0;i < inputs.length; i++){ 
     if(inputs[i].type === "submit"){ 
      inputs[i].form.submit(); 
     } 
    } 
} else { 
    window.location.assign(sitexyz); 
    window.onload=doThis; 
    function doThis(){ 
     document.getElementsByName("username")[0].value="username"; 
     document.getElementsByName("password")[0].value="password"; 
     var inputs = document.getElementsByTagName("input"); 
     for(var i = 0;i < inputs.length; i++){ 
      if(inputs[i].type === "submit"){ 
       inputs[i].form.submit(); 
      } 
     } 
    } 
} 
+0

Я изумлен, что вы нашли способ сделать это. Я никогда не видел эту технику раньше, и я немного второстепенный эксперт по букмарклетам (проверьте мою историю SO). FYI, он работает в Chrome, но, похоже, не работает в Firefox. Я серьезно сомневаюсь, что вы найдете способ сделать это, не используя CTRL. Это вопрос, который был задан много раз, и для меня удивительно, что вообще есть какая-то работа. Будьте благодарны, что нашли это. –

+0

Считаете ли вы, что добавление оператора if и проверка его текущего URL-адреса и запуск сценария, основанного на этом, помогут? Тогда я мог бы просто щелкнуть пару раз –

+0

Да, конечно, это должно сработать. Это также интересный подход. –

ответ

-1

я обычно думаю, Дж.С. закладок, как формируется так:

javascript:document.getElementsByName("username")[0].value="username";... 

... которые вы могли бы запустить, когда вы посетили страницу. Если window.onload можно было установить для загрузки другого URL-адреса, то это будет довольно серьезная проблема безопасности (так как вы сможете вставлять скрипт на любую другую страницу).

Как более общее решение для входа на страницу, вам лучше использовать диспетчер паролей (например, тот, который поставляется с Chrome, или lastPass и т. Д.).

0

Здесь я очищен и сделал несколько правильный код нужного букмарклет для вас;)

// bookmarklet to open a page and login 
// option 1: click once to open page, click again to login 
// option 2: CTRL+click to open and login; Chrome only. 

javascript:(function(w,d){ 
    var go = 'http://example.com', 
    login = ['myUserName','myPass'], 
    inpName = ['username','password']; 
    function doit(){ 
    var un = d.getElementsByName(inpName[0]), 
     pw = d.getElementsByName(inpName[1]); 
    if (!(un && pw)) alert('login form not found!'); 
    else { 
     un[0].value = login[0]; 
     pw[0].value = login[1]; 
     pw[0].form.submit(); 
    } 
    } 
    if (d.URL == go) doit(); 
    else { 
    w.location.assign(go); 
    w.onload = doit; 
    } 
})(window,document); 
Смежные вопросы