Techno-magis

Typescript

Intégration conditionnelle de iFrameResizer

Jeudi 25 Novembre 2021

Si vous voulez que votre site soit compatible dans un iframe, mais que ça soit juste si le parent présente la bibliothèque iframe-resizer, il y a une solution assez simple :

En JavaScript vanilla :

CODE :

<script>
window.addEventListener('message', e => {
    if (
        String(e.data).startsWith('[iFrameSizer]') &&
        !document.body.classList.contains('into-container')
    ) {
        var script = document.createElement('script');
        script.src = '**CHEMIN À CHANGER**/iframeResizer.contentWindow.min.js';
        document.head.appendChild(script);
        document.body.classList.add('into-container');
    }
});
</script>

En TypeScript :

CODE :

window.addEventListener('message', (e: MessageEvent) => {
    if (
        String(e.data).startsWith('[iFrameSizer]') &&
        !document.body.classList.contains('into-container')
    ) {
        var script = document.createElement('script');
        script.src = '**CHEMIN À CHANGER**/iframeResizer.contentWindow.min.js';
        document.head.appendChild(script);
        document.body.classList.add('into-container');
    }
});
 

Note la classe “into-container” permet de changer le CSS de la page pour l'adapter au changement de mode.

Commenter le billet...

Base 64 sur NativeScript

Mardi 4 Février 2020

Il est possible d'utiliser Base64 avec Nativescript sans passer par un package, en utilisant directement celui du système :

CODE :

    // for Android
 
    base64Encode(string: string): string {
        const text = new java.lang.String(string);
        const data = text.getBytes('UTF-8');
        return String.fromCharCode(...Array.from(android.util.Base64.encode(data, android.util.Base64.DEFAULT));
    }
 
    base64Decode(string: string): string {
        const text = new java.lang.String(string);
        const data = text.getBytes('UTF-8');
        return String.fromCharCode(...Array.from(android.util.Base64.decode(data, android.util.Base64.DEFAULT)));
    }


CODE :

    //iOS
 
    base64Encode(string: string): string {
        const text = NSString.stringWithString(string);
        const data = text.dataUsingEncoding(NSUTF8StringEncoding);
        const base64 = data.base64EncodedStringWithOptions(0);
        return base64;
    }
 
    base64Decode(string: string): string {
        const decodedData = NSData.alloc().initWithBase64EncodedStringOptions(string, 0);
        const decodedString = NSString.alloc().initWithDataEncoding(decodedData, NSUTF8StringEncoding);
        return `${decodedString}`;
    }

Commenter le billet...

Mes contributions avec Angular

Mardi 10 Octobre 2017

Ça fait un petit moment que je n'ai rien publié ici. Mais ça va peut-être changer. Je travaille depuis quelque temps sur Angular/Material2 en TypeScript, et je pense que je commence à avoir une belle expérience dessus. Tout ce que j'ai fait est pour l'instant dans un cadre privé, sauf 2 projets :

  • select2-component : un Select2 dont je me suis occupé d'améliorer la partie Angular et rendre l'élément compatible (graphiquement) avec un formulaire Material2.
  • walkthrough : une sorte de guide logiciel pour Angular. Ça me permet d'expérimenter un projet complet avec support de repository NPM, etc. (désolé pour mon anglais tout pourri)

Maintenant, je me dis que mon prochain projet pourrait être avec cette techno. Et pourquoi pas essayer du nodeJS avec, mais je m'avance un peu vite. J'ai déjà beaucoup à faire sur un autre site qui reste assez minimaliste côté JS.

Commenter le billet...
Catégories :
Par Zéfling, le 10/10/2017 à 20:55:05
Le billet a été lue 253 fois, avec 0 commentaire publié.