InAppBrowser
InAppBrowser
désigne une vue de navigateur Web s'affichant après un appel à[window.open](window.open.html)()
, ou via un lien formulé de la façon suivante<a target="_blank">
.
var ref = window.open('http://apache.org', '_blank', 'location=yes');
Remarque : une fenêtre InAppBrowser se comporte comme un navigateur Web standard et ne peut pas accéder aux API Cordova.
Description
L'objet retourné par un appel à [window.open](window.open.html)
.
Méthodes
- addEventListener
- removeEventListener
- close
- show
- executeScript
- insertCSS
Accéder à la fonctionnalité
Depuis la version 3.0, Cordova implémente les API liées à l'appareil en tant que plugins. Utiliser la commande plugin
de l'Interface en Ligne de Commande, décrite dans la section intitulée L'Interface en Ligne de Commande, afin d'ajouter ou retirer cette fonctionnalité à un projet :
$ cordova plugin add org.apache.cordova.inappbrowser
$ cordova plugin ls
[ 'org.apache.cordova.inappbrowser' ]
$ cordova plugin rm org.apache.cordova.inappbrowser
Ces commandes s'appliquent à toutes les plates-formes ciblées mais modifient les paramètres de configuration spécifiques aux différentes plates-formes tel que décrit ci-dessous :
Android (dans
app/res/xml/config.xml
)<feature name="InAppBrowser"> <param name="android-package" value="org.apache.cordova.InAppBrowser" /> </feature>
iOS (dans
config.xml
)<feature name="InAppBrowser"> <param name="ios-package" value="CDVInAppBrowser" /> </feature>
Windows Phone 7 et 8 (dans
config.xml
)<feature name="InAppBrowser" />
Certaines plates-formes peuvent prendre en charge cette fonctionnalité sans nécessiter aucune configuration spéciale. Voir Support de plate-forme dans la section vue d'ensemble.
addEventListener
Ajoute un écouteur pour un évènement de la fenêtre
InAppBrowser
.
ref.addEventListener(eventname, callback);
ref : référence à la fenêtre
InAppBrowser
. (InAppBrowser)eventname : l'évènement à écouter (String)
- loadstart : évènement déclenché lorsque le chargement d'une URL débute dans la fenêtre
InAppBrowser
. - loadstop : évènement déclenché lorsque la fenêtre
InAppBrowser
finit de charger une URL. - loaderror : évènement déclenché si la fenêtre
InAppBrowser
rencontre une erreur lors du chargement d'une URL. - exit : évènement déclenché lorsque la fenêtre
InAppBrowser
est fermée.
- loadstart : évènement déclenché lorsque le chargement d'une URL débute dans la fenêtre
callback : la fonction à exécuter lorsque l'évènement se déclenche. Un objet
InAppBrowserEvent
lui est transmis comme paramètre.
Plates-formes supportées
- Android
- BlackBerry
- iOS
- Windows Phone 7 et 8
Petit exemple
var ref = window.open('http://apache.org', '_blank', 'location=yes');
ref.addEventListener('loadstart', function() { alert(event.url); });
Exemple complet
<!DOCTYPE html>
<html>
<head>
<title>InAppBrowser.addEventListener Example</title>
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8">
// Wait for device API libraries to load
//
document.addEventListener("deviceready", onDeviceReady, false);
// device APIs are available
//
function onDeviceReady() {
var ref = window.open('http://apache.org', '_blank', 'location=yes');
ref.addEventListener('loadstart', function(event) { alert('start: ' + event.url); });
ref.addEventListener('loadstop', function(event) { alert('stop: ' + event.url); });
ref.addEventListener('loaderror', function(event) { alert('error: ' + event.message); });
ref.addEventListener('exit', function(event) { alert(event.type); });
}
</script>
</head>
<body>
</body>
</html>
removeEventListener
Supprime un écouteur pour un évènement de la fenêtre
InAppBrowser
.
ref.removeEventListener(eventname, callback);
ref : référence à la fenêtre
InAppBrowser
. (InAppBrowser)eventname : l'évènement pour lequel arrêter l'écoute. (String)
- loadstart : évènement déclenché lorsque le chargement d'une URL débute dans la fenêtre
InAppBrowser
. - loadstop : évènement déclenché lorsque la fenêtre
InAppBrowser
finit de charger une URL. - loaderror : évènement déclenché si la fenêtre
InAppBrowser
rencontre une erreur lors du chargement d'une URL. - exit : évènement déclenché lorsque la fenêtre
InAppBrowser
est fermée.
- loadstart : évènement déclenché lorsque le chargement d'une URL débute dans la fenêtre
callback : la fonction à exécuter lorsque l'évènement se déclenche. Un objet
InAppBrowserEvent
lui est transmis comme paramètre.
Plates-formes supportées
- Android
- BlackBerry
- iOS
- Windows Phone 7 et 8
Exemple court
var ref = window.open('http://apache.org', '_blank', 'location=yes');
var myCallback = function() { alert(event.url); }
ref.addEventListener('loadstart', myCallback);
ref.removeEventListener('loadstart', myCallback);
Exemple complet
<!DOCTYPE html>
<html>
<head>
<title>InAppBrowser.removeEventListener Example</title>
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8">
// Wait for device API libraries to load
//
document.addEventListener("deviceready", onDeviceReady, false);
// Global InAppBrowser reference
var iabRef = null;
function iabLoadStart(event) {
alert(event.type + ' - ' + event.url);
}
function iabLoadStop(event) {
alert(event.type + ' - ' + event.url);
}
function iabLoadError(event) {
alert(event.type + ' - ' + event.message);
}
function iabClose(event) {
alert(event.type);
iabRef.removeEventListener('loadstart', iabLoadStart);
iabRef.removeEventListener('loadstop', iabLoadStop);
iabRef.removeEventListener('loaderror', iabLoadError);
iabRef.removeEventListener('exit', iabClose);
}
// device APIs are available
//
function onDeviceReady() {
iabRef = window.open('http://apache.org', '_blank', 'location=yes');
iabRef.addEventListener('loadstart', iabLoadStart);
iabRef.addEventListener('loadstop', iabLoadStop);
iabRef.removeEventListener('loaderror', iabLoadError);
iabRef.addEventListener('exit', iabClose);
}
</script>
</head>
<body>
</body>
</html>
close
Ferme la fenêtre
InAppBrowser
.
ref.close();
- ref : référence à la fenêtre
InAppBrowser
. (InAppBrowser)
Plates-formes supportées
- Android
- BlackBerry
- iOS
- Windows Phone 7 et 8
Exemple court
var ref = window.open('http://apache.org', '_blank', 'location=yes');
ref.close();
Exemple complet
<!DOCTYPE html>
<html>
<head>
<title>InAppBrowser.close Example</title>
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8">
// Wait for device API libraries to load
//
document.addEventListener("deviceready", onDeviceReady, false);
// device APIs are available
//
function onDeviceReady() {
var ref = window.open('http://apache.org', '_blank', 'location=yes');
// close InAppBrowser after 5 seconds
setTimeout(function() {
ref.close();
}, 5000);
}
</script>
</head>
<body>
</body>
</html>
show
Affiche une fenêtre InAppBrowser qui a été ouverte cachée. Appeler cette méthode n'a aucun effet si la fenêtre en question est déjà visible.
ref.show();
- ref : référence à la fenêtre InAppBrowser. (
InAppBrowser
)
Plates-formes supportées
- Android
- BlackBerry
- iOS
Exemple court
var ref = window.open('http://apache.org', '_blank', 'hidden=yes');
ref.show();
Exemple complet
<!DOCTYPE html>
<html>
<head>
<title>InAppBrowser.show Example</title>
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8">
// Wait for Cordova to load
//
document.addEventListener("deviceready", onDeviceReady, false);
// Cordova is ready
//
function onDeviceReady() {
var ref = window.open('http://apache.org', '_blank', 'hidden=yes');
ref.addEventListener('loadstop', function(event) {
alert('background window loaded');
});
// close InAppBrowser after 5 seconds
setTimeout(function() {
ref.close();
}, 5000);
}
</script>
</head>
<body>
</body>
</html>
executeScript
Injecte du code JavaScript dans la fenêtre
InAppBrowser
ref.executeScript(details, callback);
ref : référence à la fenêtre
InAppBrowser
. (InAppBrowser)injectDetails : détails du script à exécuter, requérant une propriété
file
oucode
. (Object)- file : URL du script à injecter.
- code : texte du script à injecter.
callback : une fonction exécutée après l'injection du code JavaScript.
- Si le script injecté est de type
code
, un seul paramètre est transmis à la fonction callback, correspondant à la valeur de retour du script enveloppée dans unArray
. Pour les scripts multilignes, il s'agit de la valeur renvoyée par la dernière instruction ou la dernière expression évaluée.
- Si le script injecté est de type
Plates-formes supportées
- Android
- BlackBerry
- iOS
Exemple court
var ref = window.open('http://apache.org', '_blank', 'location=yes');
ref.addEventListener('loadstop', function() {
ref.executeSript({file: "myscript.js"});
});
Exemple complet
<!DOCTYPE html>
<html>
<head>
<title>InAppBrowser.executeScript Example</title>
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8">
// Wait for device API libraries to load
//
document.addEventListener("deviceready", onDeviceReady, false);
// Global InAppBrowser reference
var iabRef = null;
// Inject our custom JavaScript into the InAppBrowser window
//
function replaceHeaderImage() {
iabRef.executeScript({
code: "var img=document.querySelector('#header img'); img.src='http://cordova.apache.org/images/cordova_bot.png';"
}, function() {
alert("Image Element Successfully Hijacked");
}
}
function iabClose(event) {
iabRef.removeEventListener('loadstop', replaceHeaderImage);
iabRef.removeEventListener('exit', iabClose);
}
// device APIs are available
//
function onDeviceReady() {
iabRef = window.open('http://apache.org', '_blank', 'location=yes');
iabRef.addEventListener('loadstop', replaceHeaderImage);
iabRef.addEventListener('exit', iabClose);
}
</script>
</head>
<body>
</body>
</html>
insertCSS
Injecte des règles CSS dans la fenêtre
InAppBrowser
.
ref.insertCSS(details, callback);
ref : référence à la fenêtre
InAppBrowser
. (InAppBrowser)injectDetails : détails du fichier à injecter, requérant une propriété
file
oucode
. (Object)- file : URL de la feuille de style à injecter.
- code : contenu de la feuille de style à injecter.
callback : une fonction exécutée après l'injection du fichier CSS.
Plates-formes supportées
- Android
- BlackBerry
- iOS
Exemple court
var ref = window.open('http://apache.org', '_blank', 'location=yes');
ref.addEventListener('loadstop', function() {
ref.insertCSS({file: "mystyles.css"});
});
Exemple complet
<!DOCTYPE html>
<html>
<head>
<title>InAppBrowser.insertCSS Example</title>
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8">
// Wait for device API libraries to load
//
document.addEventListener("deviceready", onDeviceReady, false);
// Global InAppBrowser reference
var iabRef = null;
// Inject our custom CSS into the InAppBrowser window
//
function changeBackgroundColor() {
iabRef.insertCSS({
code: "body { background: #ffff00"
}, function() {
alert("Styles Altered");
}
}
function iabClose(event) {
iabRef.removeEventListener('loadstop', changeBackgroundColor);
iabRef.removeEventListener('exit', iabClose);
}
// device APIs are available
//
function onDeviceReady() {
iabRef = window.open('http://apache.org', '_blank', 'location=yes');
iabRef.addEventListener('loadstop', changeBackgroundColor);
iabRef.addEventListener('exit', iabClose);
}
</script>
</head>
<body>
</body>
</html>
InAppBrowserEvent
L'objet passé à la fonction callback d'un écouteur d'évènement ajouté via un appel à addEventListener
sur un objet InAppBrowser
.
Propriétés
type : le nom de l'évènement, soit
loadstart
,loadstop
,loaderror
ouexit
. (String)url : l'URL ayant été chargée. (String)
code : le code d'erreur, seulement pour
loaderror
. (Number)message : un message d'erreur, seulement pour
loaderror
. (String)