![]() |
IntroductionInstallationQuestions fréquemment poséesSyntaxe, mots-clés et fonctions intégréesDistribution standardImplémentation de importInterface avec le navigateur
Introduction - API DOM
Créer un document Accéder aux éléments Attributs et méthodes Evénements Evénements souris Evénements clavier Evénements focus Evénements pour glisser-déposer Chaine de requête Objets et librairies Javascript Modules intégrés propres à Brython
browser
browser.ajax browser.html browser.local_storage browser.markdown browser.object_storage browser.session_storage browser.svg browser.template browser.timer browser.websocket browser.webworker javascript asyncio Travailler avec BrythonRecettes
Salut !
Insérer du contenu dans un élément Mise en forme HTML (gras, italique...) Table HTML Attacher / détacher des événements Gérer la sélection d'options dans un SELECT Glisser-déposer Obtenir le contenu d'un élément Lire le contenu d'un fichier Stocker des objets localement Exemple de onmouseover |
Questions fréquemment poséesQ : que signifie "Brython" ? R : Browser Python (Python pour le navigateur). C'est aussi le mot gallois pour "breton". Q : avec quels navigateurs peut-on utiliser Brython ? R : sur tous les navigateurs modernes, y compris les smartphones. Le code Javscript généré évite intentionnellement de nouvelles syntaxes tant qu'elles ne sont pas supportées par la plupart des navigateurs. Noter tout de même que la performance est généralement meilleure (et parfois nettement meilleure) sur Firefox que sur Chrome. Q : quelle est la performance de Brython par rapport à Javascript, ou par rapport à d'autres solutions qui permettent d'utiliser Python dans le navigateur ? R : par rapport à Javascript, le rapport est naturellement très différent d'un programme à l'autre. Une console Javascript est fournie dans la distribution ou sur le site Brython, vous pouvez l'utiliser pour mesurer le temps d'exécution d'un script Javascript par rapport à son équivalent en Python dans l'éditeur (en décochant la case "debug"). La différence tient à deux facteurs :
ImportError si tous les chemins ont été essayés.
Q : pourquoi voit-on ce message dans la console du navigateur : "L’utilisation d’XMLHttpRequest de façon synchrone sur le fil d’exécution principal est obsolète à cause de son impact négatif sur la navigation de l’utilisateur final. Consulter http://xhr.spec.whatwg.org/ pour plus d’informations." ?
R : c'est aussi lié aux imports, ou à la lecture de fichiers. Pour réaliser ces opérations, Brython utilise des appels Ajax bloquants : il faut attendre qu'un module importé soit chargé pour pouvoir l'utiliser. Normalement les éditeurs de navigateurs ne devraient pas supprimer les appels bloquants avant longtemps.
Q : peut-on précompiler les scripts Brython pour réduire le temps d'exécution ?
R : Brython est conçu pour être aussi simple à utiliser que Javascript : on met du code Python dans une section <script> d'une page HTML, on charge la page, on édite le code, on recharge la page, etc. Ce n'est pas comme d'autres projets dans lesquels le code Python est transformé en Javascript par un programme en CPython, qu'il faut exécuter pour toute modification avant de recharger la page.
Une autre raison pour laquelle ce n'est pas une bonne idée de précompiler est que le code généré est typiquement 10 fois plus gros que le source Python de départ - c'est le prix à payer pour une compatibilité avec la spécification du langage. La page prendrait donc plus longtemps à se charger, et nous n'avons pas trouvé que cela ferait gagner du temps par rapport à une compilation à la volée.
Q : pourquoi utiliser l'opérateur <= pour construire l'arbre des éléments DOM ? Ce n'est pas pythonique !
R : Python ne possède pas de structure intégrée pour manipuler les arbres, c'est-à-dire pour ajouter des éléments "enfants" ou "frères" à un noeud de l'arbre. Pour ces opérations, on peut utiliser des fonctions ; la syntaxe favorisée par Brython est d'utiliser des opérateurs : c'est plus facile à saisir (pas de parenthèses) et plus lisible
Pour ajouter un "frère" on utilise l'opérateur +
Pour ajouter un descendant, l'opérateur <= a été choisi pour les raisons suivantes :
|