Cette traduction est incomplète. Aidez à traduire cet article depuis l'anglais.
Avec les privilèges UniversalXPConnect le code peut scruter les points d'accès WiFi disponibles afin d'obtenir des informations à leur sujet, entre autres leur SSID, adresses MAC et la force du signal. Cette fonctionnalité a été introduite principalement pour permettre aux services de geolocalisation d'utiliser les services de localisation basés sur le WiFi.
Exemple
Cette exemple affiche simplement une liste des points d'accès diponibles.
<html> <head> <title>Exemple de scrutation WiFi</title> <script> var count = 0; function test() { } test.prototype = { onChange: function (accessPoints) { netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect'); var d = document.getElementById("d"); d.innerHTML = ""; for (var i=0; i<accessPoints.length; i++) { var a = accessPoints[i]; d.innerHTML += "<p>" + a.mac + " " + a.ssid + " " + a.signal + "</p>"; } var c = document.getElementById("c"); c.innerHTML = "<p>" + count++ + "</p>"; }, onError: function (value) { alert("error: " +value); }, QueryInterface: function(iid) { netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect'); if (iid.equals(Components.interfaces.nsIWifiListener) || iid.equals(Components.interfaces.nsISupports)) return this; throw Components.results.NS_ERROR_NO_INTERFACE; }, } netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect'); var listener = new test(); var wifi_service = Components.classes["@mozilla.org/wifi/monitor;1"].getService(Components.interfaces.nsIWifiMonitor); wifi_service.startWatching(listener); </script> </head> <body> <div id="d"><p></p></div> <div id="c"><p></p></div> </body> </html>
L'objet nsIWifiListener
La première action de ce code est de prototyper l'objet écouteur qui recevra les notifications de changement dna sla liste des points d'accès. Cet objet est décrit par les lignes 11 à 40.
La méthode onChange()
(lignes 13 à 27) commence par activer les privilèges UniversalXPConnect, puis vide le div
(d
) qui va recevoir la liste des points daccès mis à jour. La boucle lignes 19 à 22 itère ensuite sur la liste des points d'accès reçus dans le tableau accessPoints et les ajoute au contenu du div
.
Par la suite le div c
est mis à jour avec le nombre de fois où liste a été renouvellée.
La méthode onError()
fait simplement surgir une laert qui affiche le code erreur reçu.
Lancer la scrutation des points d'accès
Pour commencer la scrutation des points d'accès, on instancie l'écouteur (ligne 44) puis on attrape une référence à l'interface de scrutation WiFi ligne 45. La scrutation commence ligne 47 en appelant la méthode startWatching()
sur l'interface.