Repository with sources and generator of https://larlet.fr/david/ https://larlet.fr/david/
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

2024-02-19 - Injection.md 4.2KB

Injection

[en] It’s fun to think of ==other possible uses…== Perhaps you could pull in HTML modules along with their relevant CSS link. Or embed a tweet or code examples in documentation or a blog post. It could probably even be used to load and apply a regular rel=stylesheet link asynchronously, and at a low priority, which is otherwise surprisingly hard to do (note: I didn’t test this idea much to say for sure).

HTML Includes That Work Today

J’ai cette page ouverte dans un onglet depuis littéralement des années. C’est Alexis qui me l’a rappelé en partageant htmz aujourd’hui qui va un tout petit peu plus loin.

Voilà le code en question :

<iframe 
  src="/static/david/2024/test-injection.html" 
  onload="
    this.before(
      (
        this.contentDocument.body||this.contentDocument
      ).children[0]
    );
    this.remove()
  " 
  hidden>
</iframe>

En résumé, on prend le code l’iframe et on l’injecte au chargement dans le document en cours. Voici un exemple (pas sûr que ça fonctionne depuis un agrégateur…) :

J’ai ajouté l’attribut hidden à la proposition initiale pour éviter le flash. Si vous inspectez le code, vous constatez que le paragraphe précédent tout à fait classique alors qu’il s’agissait d’une iframe (sauf si vous avez une extension qui bloque les iframe bien sûr). Jusque là c’est une forme d’inclusion mais rien de bien utile.

Ce qui devient un peu plus fou serait de pouvoir injecter un Web Component de cette façon ! Le problème étant que le this.remove() est exécuté avant le chargement du script de l’iframe… et si on le retire on conserve cet élément hidden dans le document. Ce n’est pas critique mais ce n’est pas très élégant non plus, d’autant que cela signifie que le composant est défini et instancié deux fois.

Il y a probablement des choses qui m’échappent mais il se fait tard.

To be continued…


Découvertes du jour : <base> et globalThis.

Aussi, il n’est pas forcément indiqué de générer une SECRET_KEY avec Django, il vaut mieux le faire en Python directement :

[depuis un shell]

$ python3 -c 'import secrets; print(secrets.token_hex(100))'

[en] So, what’s the fun of writing on the internet anymore? Well, if your aim is to be respected as an author, there’s probably not much fun to be had here at all. Don’t write online for fame and glory. Oblivion, obscurity and exploitation are all but guaranteed. Write here because ideas matter, not authorship. Write here because the more robots, pirates, and single-minded trolls swallow up cyberspace, ==the more we need independent writing in order to think new thoughts in the future== — even if your words are getting dished up and plated by an algorithm.

What’s the fun in writing on the internet anymore?

Rester (et alimenter la machine) ou quitter (et laisser l’espace à la machine).

Je n’aime pas beaucoup la métaphore de la forêt noire ces temps-ci car j’apprécie un peu trop les forêts pour ça. J’aurais davantage l’impression de faire partie d’une haie alors qu’il y a beaucoup de monoculture aux alentours. Avec les double sens que cette méta·phore implique.

apprentissage #laboratoire #web