mozilla
Vos résultats de recherche

    Using the Browser API

    Non standard
    Cette fonctionnalité n'est ni standard, ni en voie de standardisation. Ne l'utilisez pas pour des sites accessibles sur le Web : elle ne fonctionnera pas pour tout utilisateur. Il peut également y avoir d'importantes incompatibilités entre les implémentations et son comportement peut être modifié dans le futur.

    Cette API est disponible sur Firefox OS pour des applications privilégiées ou certifiées seulement.

    Résumé

    L'API HTML Browser (Navigateur HTML) est une extension de l'élément <iframe> qui permet aux applications d'implémenter des navigateurs ou des applications de navigations. Cela implique deux choses principales :

    • Il faut faire apparaître l'élément iframe comme une fenêtre de navigation à part entière au sein du contenu intégré. Cela signifie que les propriétés window.top, window.parent, window.frameElement et autres ne devraient pas refléter la structure de la frame. Il est également possible d'exprimer ce qui est intégré au sein de l'application web.
    • Une API pour manipuler et surveiller l'état du contenu.

    Il est également possible de communiquer sur le fait que le contenu intégré soit une application web. Dans ce cas, le contenu sera chargé avec le contexte pertinent (comme les permissions).

    Utilisation

    Un élément <iframe> est transformé en fenêtre de navigateur en utilisant l'attribut mozbrowser :

    <iframe src="http://hostname.tld" mozbrowser>

    Afin d'intégrer une application web, il faut également renseigner l'attribut mozapp, la valeur sera le chemin vers le manifeste de l'application :

    <iframe src="http://hostname.tld" mozapp='http://chemin/du/manifeste.webapp' mozbrowser>

    Enfin, en utilisant l'attribut remote le contenu de l'élément<iframe> peut être chargé en utilisant uniquement un processus fils qui sera séparé de celui de la page qui contient l'élément <iframe>.

    <iframe src="http://hostname.tld" mozbrowser remote>

    Warning : Ce dernier attribut est indispensable pour des raisons de sécurité lors du chargement de contenu provenant d'une origine inconnue. Si vous ne l'utilisez pas, cela rendra votre application vulnérable aux attaques d'un site web malveillant.

    Permissions de l'application

    Chaque application qui souhaite intégrer une fenêtre de navigateur devra avoir la permission browser au sein du manifeste d'application.

    {
      "permissions": {
        "browser": {}
      }
    }

    Si elle souhaite intégrer une application web, l'application hôte devra disposer de la permission embed-apps.

    {
      "permissions": {
        "browser": {},
        "embed-apps": {}
      }
    }

    Méthodes supplémentaires

    Afin d'être conforme aux spécifications d'un navigateur  <iframe>, Firefox OS étend l'interface DOM HTMLIFrameElement. Ces nouvelles méthodes permettent d'augmenter les capacités de l'élément  <iframe> :

    Les méthodes de navigation

    Ces méthodes permettent de naviguer au sein de l'historique de l'élément <iframe>. Elles sont nécessaires afin d'implémenter les boutons de pages précédentes, suivantes ou le bouton d'actualisation de la page.

    • reload() : permet de recharger le contenu de l'élément <iframe>.
    • stop() : permet d'arrêter le chargement du contenu de l'élément <iframe>.
    • getCanGoBack() : permet de de savoir s'il est possible de naviguer dans les pages précédentes (s'il y en a).
    • goBack() : remplace l'emplacement de l'élément <iframe> par l'emplacement précédent contenu dans l'historique.
    • getCanGoForward() : permet de savoir s'il est possible de naviguer vers la (les) page(s) suivante(s).
    • goForward() : remplace l'emplacement de l'élément <iframe> par l'emplacement suivant contenu dans l'historique.

    Les méthodes liées aux performances

    Ces méthodes sont utilisées pour gérer les ressources utilisées par un navigateur contenu dans un élément <iframe>. Cela est particulièrement utile lorsqu'il s'agit d'un navigateur utilisant des onglets.

    Méthodes liées aux événements

    Afin de gérer le contenu du navigateur <iframe> il est nécessaire d'introduire de nouveaux événements (voir ci-après). Les méthodes suivantes peuvent être utilisées pour manipuler ces événements :

    Méthodes diverses

    Ces méthodes sont des utilitaires destinés aux applications qui conteiennent un navigateur <iframe>.

    • getScreenshot() : permet de prendre une capture d'écran du contenu du navigateur <iframe>. Ceci est surtout utile pour avoir un aperçu en vignettes pour une application de navigation à onglets.

    Événements

    Afin de permettre à une application de manipuler le navigateur <iframe>, l'application peut écouter, surveiller les nouveaux événements qui se passent au sein du navigateur  <iframe>. Il est possible de surveiller les événements suivant :

    Exemple

    Dans cet exemple, nous verrons comment implémenter un navigateur intégré de manière simplifiée.

    HTML

    Dans le code HTML, il faut juste ajouter une barre pour la saisie de l'URL, un bouton « Aller à », un bouton « Arrêter » et un élément  <iframe> pour le navigateur.

    <header>
      <input id="url">
      <button id="go">Aller à</button>
      <button id="Stop">Arrêter</button>
    </header>
    
    <iframe src="about:blank" mozbrowser remote></iframe>
    

    CSS

    Il est possible de passer du bouton « Aller à » au bouton « Arrêter »  (et vice versa) en utilisant ce fragment de code CSS :

    button:disabled {
      display: none;
    }

    JavaScript

    Et maintenant, il faut ajouter les fonctionnalités nécessaires au navigateur :

    document.addEventListener("DOMContentLoaded", function () {
      var url  = document.getElementById("url");
      var go   = document.getElementById("go");
      var stop = document.getElementById("stop");
    
      var browser = document.getElementsByTagName("iframe")[0];
    
      // Cette fonction permet de passer entre le bouton "Aller" au bouton "Arreter"
      // (et vice versa). Si le navigateur charge, le bouton "Aller" est désactivé 
      // et le bouton "Arrêter" est activé. Sinon, on a l'état inverse.
      function uiLoading(isLoading) {
          go.disabled =  isLoading;
        stop.disabled = !isLoading;
      }
    
      go.addEventListener("touchend", function () {
        browser.setAttribute("src", url.value);
      });
    
      stop.addEventListener("touchend", function () {
        browser.stop();
      });
    
      // Quand le navigateur charge, on change l'état des boutons "Aller" et "Arrêter"
      browser.addEventListener('mozbrowserloadstart', function () {
        uiLoading(true);
      });
    
      // Quand le navigateur a fini de charger du contenu, 
      // on change l'état des boutons "Aller" et "Arrêter"
      browser.addEventListener('mozbrowserloadend', function () {
        uiLoading(false);
      });
    
      // Si jamais il y a une erreur il faut également
      // changer l'état des boutons "Aller" et "Arrêter"
      browser.addEventListener('mozbrowsererror', function (event) {
        uiLoading(false);
        alert("Erreur de chargement : " + event.detail);
      });
    
      // Lorsqu'un utilisateur suit un lien il faut s'assurer que 
      // l'emplacement de la nouvelle page apparaît dans la barre d'URL
      browser.addEventListener('mozbrowserlocationchange', function (event) {
        url.value = event.detail;
      });
    });

    Voir aussi

    Étiquettes et contributeurs liés au document

    Étiquettes : 
    Contributors to this page: SphinxKnight
    Dernière mise à jour par : SphinxKnight,