Question

J'utilise JavaScript dans un bookmarklet pour les éléments de formulaire POPULATE sur un site:

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

Cela fonctionne. Mais ce que je voudrais créer un bookmarklet pour qu'il ouvre la page cible, et renseigne les valeurs là-bas; mais il semble que la page est onces chargée, d'autres codes JavaScript ne sont pas exécutées. Donc, ce qui suit ne fonctionne pas.

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;

J'ai aussi expérimenté avec setTimeout pour retarder l'exécution de mon code, mais ça n'a pas marché.

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);

Comment puis-je charger mon script une fois que je sais que la page cible est complètement chargée?

Était-ce utile?

La solution

Greasemonkey est intégré dans Chrome, sons comme vous essayez de réinventer la roue. Installez un fichier JS et il sera exécuté lorsque la page se charge.

Autres conseils

Je ne pas utiliser Greasemonkey en règle personnelle, le code pour les navigateurs qui ne devraient pas l'utiliser. Bookmarklets sont une approche plus petit dénominateur commun pour automatiser des connexions lorsque votre système est verrouillé et ne permettent pas l'installation de Greasemonkey, Roboform, etc.

J'ai codé beaucoup de bookmarklets de connexion et pensé à ce que vous essayez de faire: ajouter un script qui est exécuté après le chargement de la page. Je suis venu à cette page la recherche de la solution, mais maintenant je suis content que ça ne fonctionne pas.

Pensez aux implications de sécurité de ce. S'il était possible d'écho à des frappes sur une page chargée, il serait également en mesure d'écouter les frappes et les envoyer ailleurs - très mauvais.

Si vous voulez automatiser les connexions, essayez un modèle de bookmarklet comme ceci (supprimer les sauts de ligne):

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();
     } 
    }

En cliquant sur le lien vous amène une fois à la page signon.aspx. Une fois que le champ nom d'utilisateur est disponible sur la page chargée, en cliquant sur le même lien à nouveau se remplir le formulaire et le soumettre.

Il est donc un plus clic que vous espériez, mais si vous mettez le bookmarklet sur une barre d'outils, il n'y a guère de retard. Bonne chance!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top