Créer un bookmarklet en Python

Ceci est le premier post J'ai créé un bookmarklet qui fonctionne avec du code écrit en Python en utilisant Brython La seconde moitié n'est que du code golf

Qu'est-ce que Brython

http://qiita.com/ryo_grid/items/5e34220ed48f4580126d Cela a été très utile.

Il y a une demande

(Peut-être que non

Je l'ai écrit pour le moment

bookmarklet


javascript:
(function() {
  var py = document.createElement('script');
  py.type = 'text/python';
  py.src = 'https://example/script.py';
  document.body.appendChild(py);
  var br = document.createElement('script');
  br.src = 'https://example/brython.js';
  br.onload = function() {
    brython();
  };
  document.body.appendChild(br);
})();

/script.py


from browser import alert

alert("Hello World!")

Le mécanisme est simple, juste avant </ body>

<script type="text/python" src="https://example/script.py"></script>
<script src="https://example/brython.js"></script>

Ajoute simplement Après avoir chargé brython.js, appelez brython () ʻen utilisant l'attribut onload pour exécuter le script text / python` dans la page.

Problème inter-domaines

Brython utilise Ajax pour charger tous les scripts externes Par conséquent, il y a un problème fatal que le bookmarklet ne fonctionne pas sauf sur la page du serveur où le script est placé. Donc je l'ai résolu en ajoutant ʻAccess-Control-Allow-Origin: * `à l'en-tête HTTP

raccourcir

C'est un bookmarklet, donc il devrait être plus court (?)

Omettez la déclaration et remplacez le nom de la variable par un caractère

Mettez également le document dans la variable

javascript:
(function(d,p,b) {
  p = d.createElement('script');
  p.type = 'text/python';
  p.src = 'https://example/script.py';
  d.body.appendChild(p);
  b = d.createElement('script');
  b.src = 'https://example/brython.js';
  b.onload = function() {
    brython();
  };
  d.body.appendChild(b);
})(document);

Récurrence

Appel avec ʻarguments.callee` car il n'y a pas de nom de fonction (Si vous donnez un nom de fonction, un espace sera inséré et il ne convient pas comme signet) Utiliser l'opérateur ternaire sans instruction if

javascript:
(function d(d,u,c,e) {
  e = d.createElement('script');
  e.src = u + (c ? 'brython.js' : 'script.py');
  c ? (arguments.callee(d,u), e.onload = function() {
    brython();
  }) : (e.type = 'text/python');
  d.body.appendChild(e);
})(document,'https://example/',1);

Supprimer les espaces, les sauts de ligne

javascript:(function d(d,u,c,e) {e=d.createElement('script');e.src=u+(c?'brython.js':'script.py');c?(arguments.callee(d,u),e.onload=function(){brython();}):(e.type='text/python');d.body.appendChild(e);})(document,'https://example/',1);

330 caractères => 235 caractères Je pense que c'est encore long, mais ça semble être la limite avec ma technologie

C'est fini, bonne vie en Python!

Recommended Posts

Créer un bookmarklet en Python
Faisons un calcul de combinaison avec Python
Copiez la liste en Python
Créez un jeu Janken en une seule ligne (python)
Créez un tracé de R semblable à un joyplot avec python
Prendre une capture d'écran en Python
Créer une fonction en Python
Ne faites pas test.py en Python!
Faites une loterie avec Python
Rendre Opencv disponible en Python
Segfo python en 2 lignes
Dessinez un cœur en Python
Essayez de créer un module Python en langage C
Créez un Slackbot simple avec un bouton interactif en python
Probablement dans un serpent Nishiki (Titre original: Peut-être en Python)
Ecrire une dichotomie en Python
Segfo python en une ligne
[python] Gérer les fonctions dans une liste
Appuyez sur une commande en Python (Windows)
Créer un conteneur DI avec Python
Faisons une interface graphique avec python.
Dessinez une matrice de diagramme de dispersion avec python
ABC166 en Python A ~ C problème
Ecrire des algorithmes A * (A-star) en Python
Rendre la sortie standard non bloquante en Python
python / Créer un dict à partir d'une liste.
[Python] Faire de la fonction une fonction lambda
Créer un système de recommandation avec python
Résoudre ABC036 A ~ C avec Python
Ecrire un graphique à secteurs en Python
Ecrire le plugin vim en Python
Écrire une recherche de priorité en profondeur en Python
Segfo python en trois lignes
Implémentation d'un algorithme simple en Python 2
Faisons un graphe avec python! !!
Résoudre ABC037 A ~ C avec Python
Exécutez un algorithme simple en Python
Dessinez un diagramme CNN en Python
Créez un générateur de rideaux avec Blender
Créer une chaîne aléatoire en Python
Lors de l'écriture d'un programme en Python
Créer un tableau de multiplication de chaque élément dans une feuille de calcul (Python)
Faisons un service de vente au comptant 4 (en Python mini Hack-a-thon)
J'ai fait un chronomètre en utilisant tkinter avec python
Je veux ajouter un joli complément à input () en python
Générer une collection de première classe en Python
Quadtree en Python --2
CURL en Python
Métaprogrammation avec Python
Livre en spirale en Python! Python avec un livre en spirale! (Chapitre 14 ~)
Résoudre ABC175 A, B, C avec Python
Python 3.3 avec Anaconda
Géocodage en python
SendKeys en Python
Utiliser l'impression dans l'expression lambda Python2
Faisons un jeu de shiritori avec Python
Créer une animation GIF d'art ASCII avec Python
Faites une visite Euler non récursive en Python
Méta-analyse en Python