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
http://qiita.com/ryo_grid/items/5e34220ed48f4580126d Cela a été très utile.
(Peut-être que non
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.
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
C'est un bookmarklet, donc il devrait être plus court (?)
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);
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);
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