Bienvenue invité ( Connexion | Inscription )
20 Jun 2014, 23:36
Message
#1
|
|
|
Macbidouilleur d'argent ! ![]() ![]() ![]() Groupe : Membres Messages : 782 Inscrit : 11 Sep 2005 Membre no 45 692 |
Bonsoir,
Je suis en train de développer une extension pour Safari, en fait elle est pratiquement terminée mais il ne me manque plus qu'a partager des données entre ma page globale.html (et donc page globale de l'extension où est le "coeur" du JS) et une autre page utilisée pour la toolbar. J'ai essayé tout un tas de truc comme : Code safari.self.tab.dispatchMessage('message', 'datas'); et de l'autre côté un : Code safari.self.tab.addEventListener('message', callback, false); mais impossible de communiquer de l'un a l'autre. Quelqu'un aurait-il une idée ? Merci à vous. -------------------- iMac 27" - MBP 15"
PC ASUS Z97 WIFI + Bluetooth - Intel Core i7-4790K CPU 4,00GHz - GeForce 980 GTX ZOTAC 4Go - 16Go RAM - SSD Crucial Bluetooth Device (Personal Area Network) Bluetooth Device (RFCOMM Protocol TDI) Carte réseau Broadcom 802.11ac Intel Ethernet Connection I218-V |
|
|
|
![]() |
23 Jun 2014, 07:38
Message
#2
|
|
|
Macbidouilleur d'argent ! ![]() ![]() ![]() Groupe : Membres Messages : 782 Inscrit : 11 Sep 2005 Membre no 45 692 |
Bon, j'ai trouvé un autre moyen, sur cette page : https://developer.apple.com/library/safari/...009977-CH16-SW2
Dans le code suivant (copier/coller de la page citée ci-dessus) : Code const myBars = safari.extension.bars; function updateAllBars { for (var i = 0; i < myBars.length; ++i) { var barWindow = myBars[i].contentWindow; barWindow.doSomething(); var myWindow = safari.application.activeBrowserWindow; if (myBars[i].browserWindow == myWindow) { barWindow.doSomethingSpecial(); } } } A part, au moins une erreur grossière (manque les parenthèses a la fonction), on dirait que cela fonctionne un peu quand ça veut. Voici ce code adapté à mon besoin : Code function updateAllBars(message) { for (var i = 0; i < safari.extension.bars.length; ++i) { var barWindow = safari.extension.bars[i].contentWindow; //barWindow.updateBar(message); barWindow.monToto(); } } A l'utilisation de mon code, j'ai cette erreur : TypeError: 'undefined' is not a function (evaluating 'barWindow.monToto()') Je dis qu'il fonctionne quand il veut car via Extension Buidler, quand j'installe l'extension, ça marche un coup sur 5. Sans rien changer (je viens encore de faire l'essai, j'ajoute l'extension, oh surprise ça marche. Je quitte Safari, je relance, rien. Je recharge a nouveau, rie. J'inspecte a nouveau ma page globale : erreur...). Si vous avez une idée... EDIT : pour info, j'ai oublié de le mettre avec mon code déjà présent, la fonction dans l'autre fichier que j'appelle (fichier qui est indiqué dans Extension Builder) : Code <script type="text/javascript"> function monToto() { alert('toto'); } </script> J'ai aussi essayé : Code var monToto = function() { alert('toto'); } Merci pour votre aide, précieuse... Ce message a été modifié par Slumb - 28 Jun 2014, 16:36. -------------------- iMac 27" - MBP 15"
PC ASUS Z97 WIFI + Bluetooth - Intel Core i7-4790K CPU 4,00GHz - GeForce 980 GTX ZOTAC 4Go - 16Go RAM - SSD Crucial Bluetooth Device (Personal Area Network) Bluetooth Device (RFCOMM Protocol TDI) Carte réseau Broadcom 802.11ac Intel Ethernet Connection I218-V |
|
|
|
Slumb Extension Safari 20 Jun 2014, 23:36
yponomeute La toolbar ça serait pas plutôt au niveau de l... 21 Jun 2014, 08:44
Slumb Je n'ai mis ici qu'un de mes innombrables ... 21 Jun 2014, 08:51![]() ![]() |
| Nous sommes le : 5th April 2026 - 22:10 |