il doit bien avoir une solution plus simple, plutot que de devoir refaire tout le code de mon add-on.
il doit bien avoir une solution plus simple, plutot que de devoir refaire tout le code de mon add-on.
Bonjour a tous
Je suis toujours bloqué avec mon problemme de script add-on pour Firefox.
Mon add-on fonctionne nickel il bloque des urls, MAIS le problemem est que ma database est inclue dans le bootstrap.js
Les developpeur de Firefox, mont repondu ceci:
Your add-on prints debugging information to the Console, which is generally not allowed in production add-ons.
2) Please do not store large amounts of JSON/array data in executable files (js). They should be stored in separate .json file, and loaded and parsed via XHR.
Voici mon script bootstrap.js
Peut t'on m'aider a finaliser mon add-on et resoudre ce problemme?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 const {classes: Cc, interfaces: Ci, utils: Cu, results: Cr} = Components; Cu.import('resource://gre/modules/Services.jsm'); var urls_block = [ //if urls contain any of these elements they will be blocked or redirected, your choice based on code in observer line 17 'url01.com', 'url02.com', 'url03.com' ]; var observers = { 'http-on-modify-request': { observe: function (aSubject, aTopic, aData) { console.info('http-on-modify-request: aSubject = ' + aSubject + ' | aTopic = ' + aTopic + ' | aData = ' + aData); var httpChannel = aSubject.QueryInterface(Ci.nsIHttpChannel); var requestUrl = httpChannel.URI.spec; for (var i=0; i<urls_block.length; i++) { if (requestUrl.indexOf(urls_block[i]) > -1) { //httpChannel.cancel(Cr.NS_BINDING_ABORTED); //this aborts the load httpChannel.redirectTo(Services.io.newURI('data:text,ILLEGAL & DANGEROUS CONTENT BLOCKED', null, null)); //can redirect with this line, if dont want to redirect and just block, then uncomment this line and comment out line above (line 17) break; } } }, reg: function () { Services.obs.addObserver(observers['http-on-modify-request'], 'http-on-modify-request', false); }, unreg: function () { Services.obs.removeObserver(observers['http-on-modify-request'], 'http-on-modify-request'); } } }; function install() {} function uninstall() {} function startup() { for (var o in observers) { observers[o].reg(); } } function shutdown(aData, aReason) { if (aReason == APP_SHUTDOWN) return; for (var o in observers) { observers[o].unreg(); } }
Merci
ben regarde la coloration syntaxique de ton code
y pas un truc qui te parait bizare ?
A+JYT
Bonjour,
visiblement tu as vu autre chose puisque tu as corrigé, le soucis et de savoir si maintenant cela fonctionne ?
Les joies du CSS | Réponses sur forum | Simple comme JS | Essais libres autour de l'API G$$gle Maps
✂ ---------------------------------------------
developpez.net c'est aussi :
✔ Les meilleurs cours et tutoriels pour apprendre le CSS
✔ Les meilleurs cours et tutoriels pour apprendre le (X)HTML
✔ Les meilleurs cours et tutoriels pour apprendre le JavaScript
j'ai juste modifié une petite virgule en trop
mais comme je l'ai expliqué la team Mozilla voudrait que mon fichier soit externe dans un json a la place du bootstrap.js ou j'y ai mis ma data-base., après ce qu-ils me demandent moi je sais pas comment le réaliser :s c'est pour cela que je suis ici.
Doublon de http://www.developpez.net/forums/d14...-bootstrap-js/
Ton code ne semble pas avoir évolué malgré les différentes approches proposées ..?!
Peut-être n'es tu pas encore prêt à écrire un add-on qui va être utilisé en confiance par des utilisateurs ?
Charger un fichier local avec une XHR comment faire ca???
Il est inutile de créer un troisième topic pour un problème inchangé... Toutes les pistes t'ont été donné, tu as reçu une trentaine de messages pour t'aider à avancer. Mais sans une bonne connaissance de JavaScript des API abordées, ton projet d'add-on n'a que très peu de chances d'aboutir.
One Web to rule them all
Et bien mon add-on fonctionne depuis 2 ans, mais on me demande de mettre ma data-base d’URL a l’extérieur du fichier bootstrap.js et ça je n'arrive pas a le concrétiser.
Cela fait peut-être deux ans mais tu ne sembles toujours pas trouver le temps pour approfondir les pistes que l'on te donne. Lysandro et beekeep t'ont donné les deux meilleures solutions il y a plus d'un mois: readTextFromFile et AJAX. Il ne te reste plus qu'à en implémenter une, la première option en suivant la doc de Mozilla et la seconde en consultant un tuto parmi la centaine d'existants sur le net.
One Web to rule them all
Et bien j'en suis toujours la si je reprends
mais LA mon add-on ne fonctionne plus, il ne bloque plus les urls qui sont dans le fichier texte
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 const {classes: Cc, interfaces: Ci, utils: Cu, results: Cr} = Components; Cu.import('resource://gre/modules/Services.jsm'); var urls_block = null; if(!urls_block) { urls_block = readTextFromFile("url.txt").Split(','); } var observers = { 'http-on-modify-request': { observe: function (aSubject, aTopic, aData) { console.info('http-on-modify-request: aSubject = ' + aSubject + ' | aTopic = ' + aTopic + ' | aData = ' + aData); var httpChannel = aSubject.QueryInterface(Ci.nsIHttpChannel); var requestUrl = httpChannel.URI.spec; for (var i=0; i<urls_block.length; i++) { if (requestUrl.indexOf(urls_block[i]) > -1) { //httpChannel.cancel(Cr.NS_BINDING_ABORTED); //this aborts the load httpChannel.redirectTo(Services.io.newURI('data:text,ILLEGAL & DANGEROUS CONTENT BLOCKED"', null, null)); //can redirect with this line, if dont want to redirect and just block, then uncomment this line and comment out line above (line 17) break; } } }, reg: function () { Services.obs.addObserver(observers['http-on-modify-request'], 'http-on-modify-request', false); }, unreg: function () { Services.obs.removeObserver(observers['http-on-modify-request'], 'http-on-modify-request'); } } }; function install() {} function uninstall() {} function startup() { for (var o in observers) { observers[o].reg(); } } function shutdown(aData, aReason) { if (aReason == APP_SHUTDOWN) return; for (var o in observers) { observers[o].unreg(); } }
Tu as tout à partir de Mozilla / Add-ons / Bootstrapped extensions.
Sinon, as tu des erreurs ? Si oui, lesquelles ?
La méthode split s'écrit, en principe, avec un s en minuscule, es tu sûr qu'il existe une méthode Split avec un S en majuscule ?
Que contient, après chargement, ta variable urls_block ?
A quel moment du cycle de vie de ton add-on ton code de chargement de tes urls s'exécute-t-il ? Est-ce le bon moment ?
J'ai corrigé le S oui c'est un s minuscule, mai mon module ne fonctionne toujours pas, il ne bloque plus les urls qui sont contenues dans le fichier 'url.txt'
a l'interieur du fichier txt j'ai des urls comme ceci:
'url01.com',
'url02.com',
'url03.com',
etc...
donc dans mon code j'ai au debut:
je nsais pas sir le split est correct mais je pense que oui
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 var urls_block = null; if(!urls_block) { urls_block = readTextFromFile("url.txt").split(',');
Mon add-on s'execute au moment ou l'utilisateur tape un url quelquonque, si il correspond aceux dans la database il le bloque et met juste un message d'erreur 'ILLEGAL_&_DANGEROUS_CONTENT_BLOCKED'
Concernant l'application de la méthode split(), regarde quand même qu'il ne traine pas de retour chariot en fin de ligne.
Les joies du CSS | Réponses sur forum | Simple comme JS | Essais libres autour de l'API G$$gle Maps
✂ ---------------------------------------------
developpez.net c'est aussi :
✔ Les meilleurs cours et tutoriels pour apprendre le CSS
✔ Les meilleurs cours et tutoriels pour apprendre le (X)HTML
✔ Les meilleurs cours et tutoriels pour apprendre le JavaScript
Et les apostrophes aussi sont en trop dans le fichier texte.
Le mieux serait de laisser des traces de debug, histoire d'aller un peu plus loin que "ça marche pas" comme constat
One Web to rule them all
Il est aussi nécessaire d'utiliser la console du navigateur (CTRL + MAJ + J).
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScript • JavaScript et le DOM par la pratique • PHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager