Bookmarklet: lance la commande JS après le chargement de la page


4

Je construis pas mal de bookmarklets pour automatiser mon travail quotidien. Maintenant, je rencontrais un problème: j'aimerais (en cliquant sur un bookmarklet) ouvrir une page dans un navigateur Web (j'utilise Internet Explorer 8) et appliquer une opération spécifique sur son interface.

L’application Web est ancienne et ne fournit aucune option avancée telle que le filtrage par table. Cette fonctionnalité étant déjà écrite, j'aimerais maintenant ouvrir une application Web et appliquer mon code JS en un clic sur le bookmarklet.

Je voudrais donc faire en 3 étapes en un clic:

  1. Ouvrez une page Web.
  2. Attendez que la page Web soit complètement chargée.
  3. Exécuter des commandes JS, disons alert('test');

J'ai essayé plusieurs fois, mais cela me semble impossible. Je voudrais donc être sûr: est-ce faisable?


Quel navigateur utilisez-vous?
Sathyajith Bhat

@Sathya - Internet Explorer 8, malheureusement :)
boleslaw.smialy

Peut-être possible si vous chargez la page dans un cadre.
Daniel Beck

@DanielBeck - idée intéressante, je n'y avais jamais pensé. Je vais vérifier et vous laisser savoir! À votre santé!
boleslaw.smialy

@DanielBeck - totalement oublié la politique SOP. Je ne suis pas autorisé à exécuter l'action JS dans l'iframe en raison de l'origine différente de "l'étendue du bookmarklet" et de l'iframe que j'ai créé.
boleslaw.smialy

Réponses:


1

Cette fonctionnalité étant déjà écrite, j'aimerais maintenant ouvrir une application Web et appliquer mon code JS en un clic sur le bookmarklet.

Utilisez un script à distance via window.openet window.opener:

  /* Web App */
  <script>
  window.open('remote.html')
  </script>

  /* remote.html */
  <script>
  window.opener.onload = function(){}
  </script>

Ajoutez la balise de script à l'application Web via le bookmarklet, le reste sera fait.

Références

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.