Puisque le script injecté ne peut pas faire des requêtes xmlhttp interdomaines, j'ai essayé, comme il est conseillé dans les manuels d'envoyer un message du script injecté au script d'arrière-plan pour qu'il fasse le travail. Mais je n'arrive pas à faire passer les messages.pourquoi ne peut pas poster des messages entre le script de fond et le script injecté dans l'opéra 12?
Ceci est mon code, ce n'est que trois fichiers, aussi simple extension qu'il pourrait être.
config.xml
<?xml version="1.0" encoding="utf-8"?>
<widget xmlns="http://www.w3.org/ns/widgets" id="http://www.example.org/helloworld">
<name>postMessage-testcase</name>
<description>check if opera's postMessage fails</description>
</widget>
index.html
<!doctype html>
<html lang="en">
<head>
<script>
opera.extension.onmessage = function(event) {
alert("get the message!");
opera.extension.postMessage("posting reply");
};
</script>
</head>
<body></body>
</html>
includes/user.js
// ==UserScript==
// @include *apod.nasa.gov*
// ==/UserScript==
opera.extension.onmessage = function(event) {
alert("got reply !");
};
alert("yep, I'm on apod, proceeding with messages");
opera.extension.postMessage("message body");
Le script doit renvoyer en arrière des messages lorsque l'utilisateur ouvre apod.nasa.gov, mais seulement un msg est envoyer ici, pas de messagerie a lieu, aussi pas erreur apparaît dans la console.
Pourquoi ne pas simplement utiliser l'API des webmasters HTML5? Ressemble à peu près à la même chose que ce que vous faites, et fonctionne définitivement dans Opera 11.6+. – Utkanos
Si je connais un exemple comment le mettre en œuvre dans le contexte de l'opéra ext. Le truc, c'est que les web workers sont pour télécharger des fichiers depuis le serveur, et avec l'extension je dois accéder aux fichiers locaux. – rsk82
Juste flottant comme une idée - pas certain qu'il serait approprié pour vous, mais je pense que les travailleurs du Web sont OK avec les fichiers locaux, pas sûr. [Voir cette réponse] (http://stackoverflow.com/questions/11291637/daemon-thread-in-javascript/11292100#11292100) pour une démo de travailleurs Web simple que vous pourriez vouloir essayer. Désolé je ne pourrais pas être plus d'aide. – Utkanos