Guide du développeur des accélérateurs OpenService

Nouveautés de Windows Internet Explorer 8

Dans Internet Explorer 8, les accélérateurs sont des options de menu contextuel qui permettent d'accéder rapidement aux applications ou aux services Web depuis n'importe quelle page Web. Les utilisateurs peuvent installer des Accélérateurs depuis la Galerie des services d'Internet Explorer 8 ou via tout site Web en faisant la publicité. Les accélérateurs facilitent la copie des informations d'une page Web à une autre. Cet article décrit comment définir et déployer des accélérateurs de type XML.

Il contient les sections suivantes :

  • Points clés
  • Introduction
  • Catégories
  • Variables
    • Paramètres du modèle d'URL
    • Paramètres pour formulaires
    • Types de sélection
    • Implications des variables de document sur la sécurité
  • Aperçu
    • Taille
    • Contenu
    • Navigation
  • Localisation
    • Exemple en anglais
    • Exemple en espagnol
  • Installation
  • Format d'accélérateur OpenService
  • Voir aussi

Points clés

  • Les accélérateurs s'affichent dans le menu contextuel qui s'ouvre en cliquant avec le bouton droit sur la page Web dans Internet Explorer. Ils sont groupés par fonction afin que les utilisateurs puissent accéder rapidement à la tâche souhaitée.
  • Les accélérateurs permettent deux types de scénarios : les utilisateurs peuvent visionner les informations sans quitter leur page Web ou « exécuter » pour envoyer directement le contenu à une application ou un service Web.
  • Un accélérateur basé sur XML utilise un fichier XML pour décrire le format des requêtes HTTP au serveur Web. Les données du contexte cible (sélection, lien ou document) sont passées comme variables dans les paramètres d'URL et/ou les données de formulaire.
  • Pour inviter l'utilisateur à installer des accélérateurs basés sur XML à partir d'un site Web, utilisez la méthode window.external.AddService (page éventuellement en anglais).

Introduction

Les accélérateurs vous permettent d'agir sur les données d'une page Web. Vous pouvez sélectionner quelques lignes de texte et les envoyer vers un blog ou les transmettre par message électronique d'un simple clic. À l'aide d'un accélérateur préalablement installé, cette action « exécute » l'activité souhaitée en se rendant au site Web désiré, la partie sélectionnée de l'article étant déjà disponible dans le champ d'édition. Vous pouvez également agir sur les données sans vous rendre sur un autre site Web à l'aide d'accélérateurs d'« aperçu », par exemple, pour traduire un mot ou localiser une adresse sur un plan. Pointez sur un accélérateur avec la souris pour consulter la fenêtre d'aperçu.

Copie d'écran d'un accélérateur de plan avec aperçu
Figure 1 : localisation d'une adresse avec un accélérateur d'aperçu.

Les accélérateurs sont déclaratifs. Ils utilisent la soumission HTTP pour communiquer entre le navigateur et le site Web. Les accélérateurs basés sur XML sont faciles à créer, à tester et à déployer pour les utilisateurs.

Catégories

Les accélérateurs sont groupés par fonction afin que les utilisateurs puissent accéder rapidement à la tâche souhaitée. Vous pouvez définir l'accélérateur par défaut pour une catégorie donnée au moment d'installer l'accélérateur ou via la boîte de dialogue Gérer les modules complémentaires.

Exemples de services existant aujourd'hui :

  • Ajouter : del.icio.us, Digg, Reddit
  • Bloguer : Windows Live Spaces, Windows Live Writer, Blogger
  • Définir : Encarta, Wikipedia, Dictionary.com
  • Localiser : Windows Live Map, Google Maps, Yahoo! Maps, MapQuest
  • Envoyer : Windows Live Mail, Gmail, Yahoo! Mail
  • Traduire : Windows Live Translation, AltaVista's Babel Fish, Google Translation

Si l'accélérateur ne rentre pas dans une des catégories recommandées, vous pouvez définir la vôtre.

<os:activity category="Share">  

La catégorie doit être un verbe reconnaissable par l'utilisateur et ne doit s'attacher à aucune marque ou application spécifique afin que d'autres accélérateurs de fonctionnalités semblables puissent l'utiliser. En outre, la valeur de l'attribut category étant utilisée par Gérer les modules complémentaires pour organiser les accélérateurs en groupes, elle doit être facile à lire et comporter des majuscules.

Variables

Les propriétés de document et de contenu sont transmises au fournisseur de service d'accélérateur via des soumissions HTTP GET et/ou POST. Ces propriétés s'expriment sous la forme de variables de remplacement qui peuvent être passées comme des champs de formulaire ou des paramètres d'URL. Les variables peuvent être spécifiées directement dans l'attribut action des éléments os:execute (page éventuellement en anglais) et os:preview (page éventuellement en anglais) (appelé « modèle d'URL »), ou dans les éléments os:parameter (page éventuellement en anglais).

Remarque : vous pouvez utiliser des cookies pour stocker l'état et les informations d'identification de l'utilisateur.

Les variables suivantes sont disponibles :

Variable Contexte Description
{documentUrl} Tous† La propriété href (page éventuellement en anglais) du document.
{documentTitle} Tous L'objet title (page éventuellement en anglais) du document, le cas échéant.
{documentDomain} Tous Domaine de second niveau effectif du href du document.
{documentHost} Tous Domaine pleinement qualifié du href du document.
{selection} Sélection Texte actuellement sélectionné.
{link} Lien L'élément href (page éventuellement en anglais) du lien sélectionné.
{linkText} Lien La propriété innerText (page éventuellement en anglais) du lien sélectionné.
{linkRel} Lien L'élément rel (page éventuellement en anglais) du lien sélectionné, le cas échéant.
{linkType} Lien L'élément type (page éventuellement en anglais) du lien sélectionné, le cas échéant.
{linkDomain} Lien Domaine de second niveau effectif du href du lien.
{linkHost} Lien Domaine pleinement qualifié du href du lien.

†Non disponible sur l'aperçu en dehors du contexte du document.

À savoir à propos des variables :

  • Toujours placer les noms de variable entre accolades {} ; par exemple {selection}. Pour spécifier un caractère d'accolade littéral dans la demande, encadrez-le de barres obliques inverses, comme dans \{{selection}\}.
  • Un « ? » placé après le nom de la variable indique qu'elle est facultative ; par exemple, {documentTitle?}.
  • Si une variable obligatoire (non facultative) du modèle d'URL n'est pas disponible (par exemple, si vous tentez d'exécuter un accélérateur comprenant {linkRel} dans l'attribut action sur un lien sans attribut rel), l'accélérateur ne peut pas être exécuté et son entrée dans le menu contextuel est grisée.
  • Si, pour une raison quelconque, un élément os:parameter a une valeur vide, il ne s'affichera pas dans la demande.

Paramètres du modèle d'URL

Les paramètres d'URL transmettent au service les informations de la page Web. Dans une demande get, tous les paramètres sont passés sur l'URL si vous les spécifiez comme étant des éléments os:parameter ou si vous ajoutez directement des variables au modèle d'URL.

Remarque : : Si vous spécifiez des éléments os:parameter, les paramètres d'URL qui suivent le point d'interrogation (?) dans le modèle d'URL ne seront pas utilisés.

Veillez à identifier correctement les variables facultatives dans le modèle d'URL. Examinons le modèle suivant :

<os:execute method="get"
    action="http://example.com/service.aspx?url={documentUrl}&title={documentTitle?}" />  

Dans cet exemple, documentUrl est une variable obligatoire et documentTitle est facultatif. Si la valeur de documentTitle est vide, une chaîne vide sera utilisée pour le paramètre title sur l'URL. Toutefois, si la valeur obligatoire de documentUrl est vide, l'accélérateur ne sera pas disponible (grisé) dans le menu contextuel des accélérateurs.

Paramètres pour formulaires

Dans une demande post, les éléments os:parameter spécifient les paires nom/valeur des données du formulaire. L'exemple suivant passe les mêmes valeurs que le précédent.

<os:execute method="post" action="http://example.com/service.aspx>
    <os:parameter name="url" value="{documentUrl}" />
    <os:parameter name="title" value="{documentTitle?}" />
</os:execute>  

Si un paramètre obligatoire (non facultatif) reste indéfini, il sera ignoré. Par exemple, si {selection} a été spécifié mais reste indisponible, le paramètre sera abandonné dans la demande.

Types de sélection

Le texte sélectionné peut être interprété de deux façons : comme du « texte » ordinaire (valeur par défaut) ou comme balise « html ». Le type de sélection est fixé sur l'élément os:parameter.

Le texte sélectionné est codé de la façon dont l'exige la méthode de requête HTTP sélectionnée. Sur l'URL, cela signifie que les caractères non-alphanumériques sont codés en pourcentage et que les sauts de ligne sont passés sous la forme de paires « CR LF » (%0D%0A). Si l'utilisateur choisit d'envoyer plusieurs lignes de texte dans une sélection, le service Web doit être capable de gérer sans peine l'élément « CR LF ».

Cc287851.cc287851UI_security_bang_16(fr-fr,VS.85).gif**Alerte de sécurité ** Les services Web qui acceptent le code HTML en entrée doivent être configurés correctement pour gérer les entrées HTML arbitraires. Les services Web qui autorisent les entrées arbitraires sans filtrage ni codage sont sensibles aux attaques par injection de HTML/script.

Si vous créez un accélérateur utilisant un paramètre {sélection} de type html, assurez-vous que le service Web est installé de manière à l'interpréter correctement. Examinons le service suivant qui accepte naïvement le texte de la chaîne de requête de l'URL et le place directement dans l'attribut value (page éventuellement en anglais) d'un input (page éventuellement en anglais) de texte à l'aide d'ASP (Active Server Pages) :

<input name="txtQueryString" size="60" maxlength="65000" value="<%=Request.QueryString("q")%>" /> 

Dans ce cas, si le service doit accepter le code HTML provenant de l'accélérateur, le texte entrant risque de fermer prématurément la balise d'entrée et de réécrire certaines parties de la page Web. Pire encore, des scripts malveillants ou des instructions SQL injectées de cette manière seront autorisés à s'exécuter dans le contexte du domaine qui héberge le site Web. Pour en savoir plus sur les façons de valider les entrées afin de protéger vos applications contre des attaques par injection, voir Comment : Se protéger contre les attaques de type injection dans ASP.NET (page éventuellement en anglais). Consulter également la discussion sur l'injection de script côté client à l'aide de innerHTML (page éventuellement en anglais).

Implications des variables de document sur la sécurité

Les variables de document risquant d'être utilisées pour suivre les utilisateurs à leur insu, il n'est pas possible de les utiliser dans certains contextes.

  • Les variables de document ne peuvent pas être utilisées par un accélérateur d'aperçu, sauf dans le contexte du document.
  • La transmission de variables de document est interdite entre les protocoles HTTP et HTTPS (Secure Hypertext Transfer Protocol), ainsi qu'entre une zone de sécurité au niveau de restriction inférieur et une zone de sécurité ayant un niveau de restriction supérieur, par exemple depuis une page de la zone intranet vers un serveur situé sur Internet.

Si une variable obligatoire de document n'est pas disponible pour une raison quelconque, l'entrée de l'accélérateur sera grisée dans le menu contextuel.

Aperçu

Un accélérateur peut fournir un aperçu HTML facultatif qui s'affiche lorsque l'utilisateur pointe sur l'accélérateur dans le menu. Les aperçus sont utiles pour obtenir rapidement un plan, une définition ou une traduction sur place, des contrôles d'accès au contenu ou des liens vers du contenu connexe.

La fenêtre d'aperçu doit être utilisée pour une interaction légère. Elle peut contenir des liens qui renvoient l'utilisateur vers une page Web complète pour plus d'informations. L'aperçu n'empêche pas l'utilisateur de cliquer sur l'article de menu des accélérateurs.

Les fonctionnalités d'aperçu sont exprimées dans le fichier Accelerator OpenService par l'élément os:preview (page éventuellement en anglais). Lorsque l'utilisateur pointe sur l'élément de menu, Internet Explorer fait une requête HTTP et affiche le HTML résultant dans la fenêtre d'aperçu de HTML.

Taille

La fenêtre d'aperçu est limitée à 320 points en largeur et 240 points en hauteur sur un affichage de 96 points par pouce (dpi). Tout le contenu débordant de la région est supprimé. Il n'est pas recommandé d'insérer du contenu susceptible d'afficher des contrôles avec des barres de défilement. Les fonctionnalités d'aperçu visent à permettre à l'utilisateur de consulter rapidement les informations sans trop d'interventions.

Contenu

L'aperçu limite les ressources de script au même domaine os:homepageUrl (page éventuellement en anglais) que celui de l'accélérateur. Il prend également en charge les contrôles ActiveX Microsoft s'ils sont déjà installés par l'utilisateur pour le domaine.

L'utilisateur peut naviguer dans la fenêtre d'aperçu à l'aide de liens. Pour envoyer l'utilisateur vers une page Web complète, faites ouvrir le lien dans une nouvelle fenêtre. Cela peut se faire de deux façons :

  1. Donnez à l'attribut target (page éventuellement en anglais) la valeur « _blank » dans le cadre du lien hypertexte. Lorsque l'utilisateur l'invoquera, le navigateur l'ouvrira comme un nouvel onglet.

    <a href="gotosite.html" target="_blank">view full site</A>  

  2. Utilisez la méthode open (page éventuellement en anglais) et pointez l'URL d'entrée vers le site sur lequel vous souhaitez que l'utilisateur se rende.

    <FORM>
    <INPUT type="button" value="View Full Site"
    onClick="window.open(gotosite.html')" />
    </FORM>  

Localisation

Un fichier d'accélérateur OpenService ne peut prendre en charge qu'un seul jeu de paramètres régionaux. Si le service prend en charge plusieurs jeux de paramètres régionaux, il lui faudra un fichier XML distinct pour chaque langue. Non seulement il faut utiliser du texte approprié aux paramètres régionaux pour os:name (page éventuellement en anglais) et os:description (page éventuellement en anglais), mais la valeur de l'attribut category doit également être localisée dans la langue de l'utilisateur. La page Web qui invite à utiliser ces accélérateurs doit utiliser l'en-tête accept-language de la demande pour déterminer et afficher le fichier XML correct que l'utilisateur devra installer.

Exemple en anglais

<?xml version="1.0" encoding="UTF-8"?>
<os:openServiceDescription
    xmlns:os="https://www.microsoft.com/schemas/openservicedescription/1.0">
    <os:homepageUrl>http://maps.yahoo.com</os:homepageUrl>
    <os:display>
        <os:name>Map with Yahoo!</os:name>
    </os:display>
    <os:activity category="Map">
    ...
</os:openServiceDescription>  

Exemple en espagnol

<?xml version="1.0" encoding="UTF-8"?>
<os:openServiceDescription
    xmlns:os="https://www.microsoft.com/schemas/openservicedescription/1.0">
    <os:homepageUrl>http://maps.yahoo.com</os:homepageUrl>
    <os:display>
        <os:name>Mapa con Yahoo!</os:name>
    </os:display>
    <os:activity category="Mapa">
    ...
</os:openServiceDescription>  

Si un utilisateur a installé des accélérateurs pour plusieurs jeux de paramètres régionaux, tous s'affichent.

Installation

Internet Explorer 8 installe des accélérateurs via la page Web Galerie de compléments. Les sites Web peuvent également promouvoir leurs propres accélérateurs.

La première étape consiste à publier le fichier XML de l'accélérateur OpenService sur un serveur Web. L'installation d'un fichier XML d'accélérateur à partir du système local n'est pas autorisée. Vous pouvez toutefois utiliser le localhost Microsoft Internet Information Server (IIS) ou le serveur ASP.NET de Microsoft Visual Studio à des fins de test.

Ajoutez ensuite un bouton Installer un accélérateur qui appelle AddService lorsque l'on clique dessus.

<button id="myButton"
    onclick="window.external.AddService('http://www.example.com/activity.xml')">
    Add MyMap to the shortcut menu in Internet Explorer 8</button> 

Il est possible de vérifier si l'utilisateur a déjà installé cet accélérateur en appelant IsServiceInstalled (page éventuellement en anglais). Pour exécuter ce contrôle, le domaine de la page Web doit correspondre au domaine de l'os:homepageUrl spécifié dans le fichier d'accélérateur OpenService.

window.onload = function() {
    if (window.external.IsServiceInstalled('http://www.example.com','map')) {
        document.getElementById('myButton').disabled = true;
    }
}

Si la valeur renvoyée est 0, l'accélérateur n'est pas installé.

Format d'accélérateur OpenService

Cette section explique les éléments, attributs et valeurs du format de fichier d'accélérateur OpenService.

Exemple

L'accélérateur suivant basé sur XML décrit l'interaction entre le navigateur et un service de cartographie.

<?xml version="1.0" encoding="UTF-8"?>
<os:openServiceDescription
    xmlns:os="https://www.microsoft.com/schemas/openservicedescription/1.0">
    <os:homepageUrl>http://maps.example.com</os:homepageUrl>
    <os:display>
        <os:name>Map with MyMap</os:name>
        <os:icon>http://www.example.com/favicon.ico</os:icon>
        <os:description>Map addresses easily with MyMap.</os:description>
    </os:display>
    <os:activity category="Map">
        <os:activityAction context="selection">
            <os:preview action="http://maps.example.com/preview.php?addr={selection}" />
            <os:execute action="http://maps.example.com/" method="get">
                <os:parameter name="addr" value="{selection}" type="text" /> 
            </os:execute>
        </os:activityAction>
    </os:activity>
</os:openServiceDescription> 

os:openServiceDescription

<os:openServiceDescription
    xmlns:os="https://www.microsoft.com/schemas/openservicedescription/1.0">

L'élément racine du fichier d'accélérateur OpenService est os:openServiceDescription (page éventuellement en anglais). L'attribut xmlns est obligatoire et doit être https://www.microsoft.com/schemas/openservicedescription/1.0.

os:homepageUrl

<os:homepageUrl>http://maps.example.com</os:homepageUrl>

Requis. L'élément os:homepageUrl définit l'URL principale de l'accélérateur (le lieu où l'utilisateur peut accéder au service en parcourant Internet). Toutes les URL déclarées dans le fichier d'accélérateur OpenService doivent utiliser le même domaine que celui de os:homepageUrl.

os:display

<os:display> 

Requis. L'élément os:display (page éventuellement en anglais) décrit la façon dont l'accélérateur est présenté à l'utilisateur. Il contient à la fois les éléments os:name et os:icon (page éventuellement en anglais).

os:name

<os:name>Map with MyMap</os:name>

Requis. L'élément os:name (page éventuellement en anglais) de l'accélérateur qui s'affiche pour l'utilisateur sur le menu contextuel. Les noms d'accélérateurs doivent commencer par un verbe, suivi du fournisseur de services. Par exemple, « Localiser avec Windows Live » ou « Définir avec Encarta ».

os:icon

<os:icon>http://www.example.com/favicon.ico</os:icon>

Facultatif. L'élément os:icon (page éventuellement en anglais) fournit une URL à une icône de 16 x 16 pixels pour cet accélérateur. Le nom de domaine utilisé doit correspondre à l'os:homepageUrl.

os:description

<os:description>Map addresses easily with MyMap.</os:description> 

Facultatif. L'élément os:description fournit une plus longue description de l'accélérateur qui s'affiche dans la boîte de dialogue Gérer les modules complémentaires.

os:activity

<os:activity category="Map">

Requis. L'élément os:activity (page éventuellement en anglais) contient toute les fonctionnalités d'un accélérateur.

Chaque os:activity doit spécifier un attribut category pour décrire le type de fonctionnalités qu'il offre. Les accélérateurs sont classés par catégorie dans le menu contextuel du navigateur pour permettre aux utilisateurs d'accéder rapidement au type d'opération souhaité. Les utilisateurs peuvent sélectionner l'accélérateur par défaut pour une catégorie donnée lorsque celui-ci est installé ou utiliser la boîte de dialogue Gérer les modules complémentaires. Les accélérateurs par défaut sont présentés dans le menu contextuel du navigateur, tous les autres apparaissant dans un sous-menu. Pour plus d'informations, reportez-vous à la section Catégories.

os:activityAction

<os:activityAction context="selection">

Requis. Chaque os:activityAction (page éventuellement en anglais) spécifie l'interaction avec le fournisseur de services en fonction de la cible de l'accélérateur. L'attribut context facultatif spécifie la cible. La valeur par défaut est selection.

Contexte Description
document Le document actuel. Toujours disponible.
sélection Par défaut. Le texte sélectionné. L'accélérateur n'est disponible que lorsqu'on clique sur une région sélectionnée.
lien Un lien hypertexte. L'accélérateur n'est disponible que pour les liens.

os:preview

<os:preview action="http://maps.example.com/preview.php?addr={selection}" />

Facultatif. L'élément os:preview définit le contenu de la fenêtre HTML qui s'affiche lorsque l'utilisateur pointe sur l'accélérateur. Il possède les mêmes attributs et éléments enfants que l'élément os:execute. Lisez la section Aperçu pour plus de détails.

L'URL de l'attribut action peut contenir des noms de variables remplacés lorsque la commande est exécutée. Pour plus d'informations, reportez-vous à la section Variables.

os:execute

<os:execute action="http://maps.example.com/" method="get"> 

Requis. L'élément os:execute (page éventuellement en anglais) spécifie l'action principale déclenchée lorsque l'utilisateur appelle l'accélérateur. Comme os:preview, il peut contenir des variables de remplacement, dans l'attribut action ou sous forme d'éléments os:parameter distincts.

Les attributs suivants sont définis pour os:execute et os:preview :

Attribut Requis ? Description
action Oui Modèle d'URL à utiliser pour la soumission HTTP.
méthode Non Type de méthode HTTP à utiliser (get, post). La valeur par défaut est get.
enctype Non Type de contenu soumis au serveur. La valeur par défaut est application/x-www-form-urlencoded.
accept-charset Non Jeu de caractères utilisé pour la soumission. La valeur par défaut est utf-8.

os:parameter

<os:parameter name="addr" value="{selection}" type="text" /> 

Facultatif. L'élément os:parameter (page éventuellement en anglais) fournit une autre manière d'exprimer les valeurs à utiliser. Les attributs requis name et value définissent des entrées de chaîne spécifiques au service et font en général référence à des variables d'accélérateur. Consultez la liste dans la section Variables.

L'attribut facultatif type est utilisé pour transformer la variable {sélection} dans le HTML ou le texte en clair. La valeur par défaut est text.

Voir aussi