L'API Embedded Viewer vous permet d'intégrer le contenu de livres Google Livres directement dans vos pages Web avec JavaScript. L'API fournit également un certain nombre d'utilitaires pour manipuler les aperçus de livres et est souvent utilisée avec les autres API décrites sur ce site.
L'assistant d'aperçu est un outil basé sur l'API Embedded Viewer qui vous permet d'ajouter facilement des fonctionnalités d'aperçu à votre site en copiant simplement quelques lignes de code. Ce document s'adresse aux développeurs expérimentés qui souhaitent personnaliser l'affichage du lecteur sur leurs sites.
Audience
Cette documentation s'adresse aux personnes familiarisées avec la programmation JavaScript et les concepts de programmation orientée objet. Il est également recommandé de connaître Google Livres du point de vue de l'utilisateur. De nombreux tutoriels JavaScript sont disponibles sur le Web.
Cette documentation conceptuelle n'est pas complète ni exhaustive. Elle est conçue pour vous permettre de découvrir et de développer rapidement des applications intéressantes avec l'API Embedded Viewer. Les utilisateurs avancés peuvent être intéressés par la documentation de référence de l'API Embedded Viewer, qui fournit des informations complètes sur les méthodes et réponses compatibles.
Comme indiqué ci-dessus, les débutants peuvent commencer par l'assistant d'aperçu, qui génère automatiquement le code nécessaire pour intégrer des aperçus de base sur votre site.
L'exemple "Hello, World" de l'API Embedded Viewer
Le moyen le plus simple de commencer à vous familiariser avec l'API Embedded Viewer consiste à consulter un exemple simple. La page Web suivante affiche un aperçu 600x500 de Mountain View, par Nicholas Perry, ISBN 0738531367 (qui fait partie de la série "Images of America " d'Arcadia Publishing):
<!DOCTYPE html "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <title>Google Books Embedded Viewer API Example</title> <script type="text/javascript" src="https://www.google.com/books/jsapi.js"></script> <script type="text/javascript"> google.books.load(); function initialize() { var viewer = new google.books.DefaultViewer(document.getElementById('viewerCanvas')); viewer.load('ISBN:0738531367'); } google.books.setOnLoadCallback(initialize); </script> </head> <body> <div id="viewerCanvas" style="width: 600px; height: 500px"></div> </body> </html>
Vous pouvez consulter cet exemple et le télécharger pour le modifier et l'utiliser. Même dans cet exemple simple, cinq points sont à noter:
- Nous incluons le chargeur d'API à l'aide d'une balise
script
. - Nous créons un élément
div
nommé "viewerCanvas" pour contenir le visualiseur. - Nous écrivons une fonction JavaScript pour créer un objet "viewer".
- Nous chargeons le livre à l'aide de son identifiant unique (
ISBN:0738531367
dans ce cas). - Nous utilisons
google.books.setOnLoadCallback
pour appelerinitialize
une fois le chargement complet de l'API.
Ces étapes sont expliquées ci-dessous.
Charger l'API Embedded Viewer
Il est relativement simple d'utiliser le framework API Loader pour charger l'API Embedded Viewer. Il comprend les deux étapes suivantes:
- Incluez la bibliothèque du chargeur d'API:
<script type="text/javascript" src="https://www.google.com/books/jsapi.js"></script>
- Appelez la méthode
google.books.load
. La méthodegoogle.books.load
utilise un paramètre de liste facultatif spécifiant une fonction de rappel ou une langue, comme expliqué ci-dessous.<script type="text/javascript"> google.books.load(); </script>
Charger une version localisée de l'API Embedded Viewer
L'API Embedded Viewer utilise l'anglais par défaut pour afficher des informations textuelles telles que les info-bulles, les noms des commandes et le texte des liens. Si vous souhaitez modifier l'API Embedded Viewer pour qu'elle affiche correctement les informations dans une langue spécifique, vous pouvez ajouter un paramètre language
facultatif à votre appel google.books.load
.
Par exemple, pour afficher un module d'aperçu de livre avec l'interface en portugais brésilien:
<script type="text/javascript"> google.books.load({"language": "pt-BR"}); </script>
Voir un exemple (book-language.html)
Les codes de langue RFC 3066 actuellement acceptés incluent af, ar, hy, bg, ca, zh-CN, zh-TW, hr, cs, da, nl, en, fil, fi, fr, de, el, he, hu, is, id, it, ja, ko, lv, lt, ms, no, pl, pt-BR, pt-PT, ro, ru, sr, sk, sl, es, sv, tl, th, tr, uk et vi.
Si vous utilisez l'API Embedded Viewer dans des langues autres que l'anglais, nous vous recommandons vivement de diffuser votre page avec un en-tête content-type
défini sur utf-8
, ou avec une balise <meta>
équivalente sur la page. Cela permet de garantir que les caractères s'affichent correctement dans tous les navigateurs. Pour en savoir plus, consultez la page du W3C sur le paramètre de jeu de caractères HTTP.
Éléments DOM du lecteur
<div id="viewerCanvas" style="width: 600px; height: 500px"></div>
Pour qu'un livre s'affiche sur une page Web, vous devez lui réserver un espace. En règle générale, cela consiste à créer un élément div
nommé et à obtenir une référence à cet élément dans le Document Object Model (DOM) du navigateur.
L'exemple ci-dessus définit un div
nommé "viewerCanvas" et définit sa taille à l'aide d'attributs de style. Le lecteur utilise implicitement la taille du conteneur pour se dimensionner lui-même.
Objet DefaultViewer
var viewer = new google.books.DefaultViewer(document.getElementById('viewerCanvas'));
La classe JavaScript qui crée et contrôle un seul lecteur sur la page est la classe DefaultViewer
. (Vous pouvez créer plusieurs instances de cette classe. Chaque objet définira alors un lecteur distinct sur la page.) Une instance de cette classe est créée à l'aide de l'opérateur JavaScript new
.
Lorsque vous créez une instance de lecteur, vous spécifiez un nœud DOM sur la page (généralement un élément div
) en tant que conteneur pour le lecteur. Les nœuds HTML sont des enfants de l'objet JavaScript document
. Nous obtenons une référence à cet élément via la méthode document.getElementById()
.
Ce code définit une variable (nommée viewer
) et l'attribue à un nouvel objet DefaultViewer
. La fonction DefaultViewer()
est appelée constructor et sa définition (condensée pour plus de clarté à partir de la
Documentation de référence de l'API Embedded Viewer) est présentée ci-dessous:
Constructeur | Description |
---|---|
DefaultViewer(container, opts?) | Crée un lecteur dans l'container HTML donné, qui doit être un élément de niveau bloc sur la page (généralement un DIV ). Les options avancées sont transmises à l'aide du paramètre opts facultatif. |
Notez que le deuxième paramètre du constructeur est facultatif (il est destiné aux implémentations avancées qui ne relèvent pas du champ d'application de ce document) et qu'il est omis de l'exemple "Hello, World".
Initialiser la visionneuse avec un livre spécifique
viewer.load('ISBN:0738531367');
Une fois que nous avons créé un lecteur via le constructeur DefaultViewer
, il doit être initialisé avec un livre particulier. Cette initialisation est effectuée à l'aide de la méthode load()
du lecteur. La méthode load()
nécessite une valeur identifier
, qui indique à l'API le livre à afficher. Cette méthode doit être envoyée avant toute autre opération effectuée sur l'objet viewer.
Si vous connaissez plusieurs identifiants pour un livre (l'ISBN de l'édition en livre broché ou d'autres numéros OCLC), vous pouvez transmettre un tableau de chaînes d'identifiants en tant que premier paramètre à la fonction load()
. Le lecteur affichera le livre s'il existe un aperçu intégré associé à n'importe quel identifiant de la matrice.
Identifiants de livre acceptés
Tout comme la fonctionnalité Liens dynamiques, l'API Embedded Viewer est compatible avec un certain nombre de valeurs permettant d'identifier un livre particulier. Exemples :
- ISBN
- Numéro ISBN commercial à 10 ou 13 chiffres.
Exemple:ISBN:0738531367
- Numéro OCLC
- Numéro unique attribué à un livre par l'OCLC lorsque son enregistrement est ajouté au système de catalogage WorldCat.
Exemple:OCLC:70850767
- LCCN
- Numéro de contrôle de la Bibliothèque du Congrès attribué à l'enregistrement par la Bibliothèque du Congrès.
Exemple:LCCN:2006921508
- ID de volume Google Livres
- Chaîne unique attribuée par Google Livres au volume, qui apparaît dans l'URL du livre sur Google Livres.
Exemple:Py8u3Obs4f4C
- URL d'aperçu Google Livres
- URL qui ouvre une page d'aperçu d'un livre sur Google Livres.
Exemple:https://books.google.com/books?id=Py8u3Obs4f4C&printsec=frontcover
Ces identifiants sont souvent utilisés avec d'autres API de la famille d'API Google Livres. Par exemple, vous pouvez utiliser les liens dynamiques pour afficher un bouton d'aperçu uniquement si le livre peut être intégré. Ensuite, lorsque l'utilisateur clique sur le bouton, vous pouvez instancier un lecteur à l'aide de l'URL d'aperçu renvoyée par l'appel des liens dynamiques. De même, vous pouvez créer une application de navigation et d'aperçu enrichie avec l'API Books, qui renvoie plusieurs identifiants du secteur adaptés dans ses flux de volumes. Consultez la page des exemples pour découvrir quelques implémentations avancées.
Gérer les initialisations infructueuses
Dans certains cas, l'appel load
peut échouer. Cela se produit généralement lorsque l'API n'a pas trouvé de livre associé à l'identifiant fourni, lorsqu'aucun aperçu du livre n'est disponible, lorsqu'il ne peut pas être intégré ou lorsque des restrictions territoriales empêchent l'utilisateur final de voir ce livre en particulier. Vous voudrez peut-être être averti d'un tel échec, afin que votre code puisse gérer cette condition correctement. Pour cette raison, la fonction load
vous permet de transmettre un deuxième paramètre facultatif, notFoundCallback
, qui indique la fonction à appeler si le livre n'a pas pu être chargé. Par exemple, le code suivant génère une boîte d'alerte JavaScript si le livre peut être intégré:
function alertNotFound() { alert("could not embed the book!"); } function initialize() { var viewer = new google.books.DefaultViewer(document.getElementById('viewerCanvas')); viewer.load('ISBN:1234', alertNotFound); }
Voir un exemple (book-notfound.html)
À l'aide de ce rappel, vous pouvez choisir d'afficher une erreur similaire ou de masquer complètement l'élément viewerCanvas
. Le paramètre de rappel d'échec est facultatif et n'est pas inclus dans l'exemple "Bonjour à tous".
Remarque: Étant donné que les aperçus ne sont pas disponibles pour tous les livres ni pour tous les utilisateurs, il peut être utile de savoir si un aperçu est disponible avant d'essayer de charger une visionneuse. Par exemple, vous pouvez n'afficher un bouton, une page ou une section "Aperçu Google" dans votre UI que si un aperçu est réellement disponible pour l'utilisateur. Pour ce faire, vous pouvez utiliser l'API Livres ou les liens dynamiques, qui indiquent si un livre peut être intégré à l'aide de la visionneuse.
Gérer les initialisations réussies
Il peut également être utile de savoir si et quand un livre a été correctement chargé. Pour cette raison, la fonction load
accepte un troisième paramètre facultatif, successCallback
, qui s'exécutera lorsque le chargement d'un livre sera terminé.
function alertInitialized() { alert("book successfully loaded and initialized!"); } function initialize() { var viewer = new google.books.DefaultViewer(document.getElementById('viewerCanvas')); viewer.load('ISBN:0738531367', null, alertInitialized); }
Voir un exemple (book-success.html)
Ce rappel peut être utile si, par exemple, vous ne souhaitez afficher certains éléments sur votre page que si l'utilisateur a entièrement affiché son écran.
Afficher la visionneuse au chargement
google.books.setOnLoadCallback(initialize);
Lors de l'affichage d'une page HTML, le Document Object Model (DOM) est créé, et toutes les images et scripts externes sont reçues et intégrées à l'objet document
. Pour que l'internaute ne soit placé sur la page qu'une fois celle-ci entièrement chargée, la fonction google.books.setOnLoadCallback
diffère l'exécution de la fonction qui construit l'objet DefaultViewer
. Étant donné que setOnLoadCallback
n'appelle initialize
que lorsque l'API Embedded Viewer est chargée et prête à être utilisée, cela évite tout comportement imprévisible et permet de contrôler comment et quand le lecteur est dessiné.
Remarque:Pour maximiser la compatibilité entre les navigateurs, nous vous recommandons vivement de planifier le chargement du lecteur à l'aide de la fonction google.books.setOnLoadCallback
plutôt qu'à l'aide d'un événement onLoad
sur votre balise <body>
.
Interactions des spectateurs
Maintenant que vous disposez d'un objet DefaultViewer
, vous pouvez interagir avec lui. L'objet Viewer de base ressemble beaucoup au lecteur avec lequel vous interagissez sur le site Web de Google Livres et comporte de nombreux comportements intégrés.
Mais vous pouvez aussi interagir avec l'utilisateur par programmation. L'objet DefaultViewer
accepte un certain nombre de méthodes qui modifient directement l'état de l'aperçu. Par exemple, les méthodes zoomIn()
, nextPage()
et highlight()
fonctionnent de manière programmatique sur le lecteur, plutôt que par interaction utilisateur.
L'exemple suivant affiche un aperçu de livre qui "tourne" automatiquement à la page suivante toutes les trois secondes. Si la page suivante se trouve dans la partie visible du visionneuse, il fait un panoramique fluide vers la page. Sinon, il passe directement en haut de la page suivante.
function nextStep(viewer) { window.setTimeout(function() { viewer.nextPage(); nextStep(viewer); }, 3000); } function initialize() { var viewer = new google.books.DefaultViewer(document.getElementById('viewerCanvas')); viewer.load('ISBN:0738531367'); nextStep(viewer); } google.books.setOnLoadCallback(initialize);
Voir un exemple (book-animate.html)
Notez que les appels programmatiques au lecteur échoueront ou n'auront aucun effet tant que le lecteur n'est pas complètement initialisé avec un livre particulier. Pour vous assurer que vous n'appelez ces fonctions que lorsque le lecteur est prêt, utilisez le paramètre successCallback
pour viewer.load
, comme décrit ci-dessus.
Pour en savoir plus sur toutes les fonctions compatibles avec l'objet DefaultViewer
, consultez le guide de référence.
Remarques concernant la programmation
Avant de vous plonger dans l'API Embedded Viewer, vous devez prendre note des points suivants pour vous assurer que votre application fonctionne correctement sur les plates-formes prévues.
Compatibilité du navigateur
L'API Embedded Viewer est compatible avec les versions récentes d'Internet Explorer, de Firefox et de Safari, ainsi qu'avec d'autres navigateurs basés sur Gecko et WebKit, tels que Camino et Google Chrome.
Différentes applications nécessitent parfois des comportements différents pour les utilisateurs disposant de navigateurs incompatibles. L'API Embedded Viewer n'a aucun comportement automatique lorsqu'elle détecte un navigateur incompatible. La plupart des exemples de ce document ne vérifient pas la compatibilité du navigateur ni n'affichent de message d'erreur pour les navigateurs plus anciens. Les applications réelles peuvent adopter une approche plus conviviale avec des navigateurs anciens ou incompatibles, mais ces vérifications sont omises pour rendre les exemples plus lisibles.
Les applications complexes rencontreront inévitablement des incohérences entre les navigateurs et les plates-formes. Des sites tels que quirksmode.org sont également de bonnes ressources pour trouver des solutions de contournement.
XHTML et mode quirks
Nous vous recommandons d'utiliser du code XHTML conforme aux normes sur les pages contenant le lecteur. Lorsque les navigateurs voient le DOCTYPE
XHTML en haut de la page, ils affichent la page en mode "conformité aux normes", ce qui rend la mise en page et les comportements beaucoup plus prévisibles entre les navigateurs. Les pages sans cette définition peuvent s'afficher en mode quirks, ce qui peut entraîner une mise en page incohérente.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">
Remarque concernant les exemples d'API Embedded Viewer
Notez que la plupart des exemples de cette documentation n'affichent que le code JavaScript pertinent, et non le fichier HTML complet. Vous pouvez insérer le code JavaScript dans votre propre fichier HTML squelette ou télécharger le fichier HTML complet de chaque exemple en cliquant sur le lien qui suit l'exemple.
Dépannage
Si votre code ne semble pas fonctionner, voici quelques approches qui pourraient vous aider à résoudre vos problèmes:
- Vérifiez qu'il ne contient pas de fautes de frappe. Rappelez-vous que le langage JavaScript est sensible à la casse.
- Utilisez un débogueur JavaScript. Dans Firefox, vous pouvez utiliser la console JavaScript, le débogueur Venkman ou le module complémentaire Firebug. Dans IE, vous pouvez utiliser le Microsoft Script Debugger. Plusieurs outils de développement sont intégrés au navigateur Google Chrome, dont un inspecteur de DOM et un débogueur JavaScript.