IPB

Bienvenue invité ( Connexion | Inscription )

> Extension Safari
Options
Slumb
posté 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
Go to the top of the page
 
+Quote Post
 
Start new topic
Réponse(s)
Slumb
posté 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
Go to the top of the page
 
+Quote Post

Les messages de ce sujet


Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 5th April 2026 - 22:10