Est-ce que tu as mis les URLs dans un fichier à part et utilisé le code indiqué dans mon premier lien pour les charger ?
Est-ce que tu as mis les URLs dans un fichier à part et utilisé le code indiqué dans mon premier lien pour les charger ?
et bien je my perds vraiment, par rapport a mon code je ne sais pas ce que je dois modifier, poru que cela marche, et si je sauve mes urls dans un fichier externe en txt ou js.
cets pour cela en fait que je demande si c'est possible d'avoir le code de mon add-on deja modifié afin que cela fonctionnecomme je l'ai dit je ne suis malheureusement ps un genie comme certains ici avec javascript
Je ne suis pas sur que quelqu'un veuille le faire à ta place.
Tu auras plus d'aide en essayant de comprendre et de demander de l'aide sur un problème en particulier.
Tu peux utiliser un fichier texte.
Ensuite il faut lire le fichier et remplir un tableau de chaine de caractères avec les URLs.
lire le fichier texte et et remplir un tableau de chaine de caractères avec les URLs??
et cecisi je remplace ("taliste.json")) par ("blocklist.json")) ? et que dans ce fichier json je mets tous mes urls?
Code : Sélectionner tout - Visualiser dans une fenêtre à part var urls_block =JSON.parse(readTextFromFile("taliste.json"));
Oui c'est un bon début.
donc j'ai procédé comem je l'avais dit precedament mais evidament ca ne fonctionne pas.
Dans mon fichier json j'ai mis tous mes urls, mais que dosi je mettre en debut et fin de fichier pour que ca marche???
mettre juste les urls ca ne fonctionne pas!!
Si tu choisis le format texte tu peux mettre une URL par ligne.
Avec un format JSON il faut mettre un objet avec un tableau contenant les URLs au format JSON.
Donc si ma liste d'urls est un fichier texte au lieu d'un fichier json ca devrait aller??
si dans mon bootstratp.js je mets.
Code : Sélectionner tout - Visualiser dans une fenêtre à part var urls_block =JSON.parse(readTextFromFile("taliste.txt"));
Pas besoin de JSON.parse si ce n'est pas un fichier JSON.
et donc j'aije le remplace par
Code : Sélectionner tout - Visualiser dans une fenêtre à part var urls_block =JSON.parse(readTextFromFile("taliste.txt"));quoi donc?
Code : Sélectionner tout - Visualiser dans une fenêtre à part var urls_block =???(readTextFromFile("taliste.txt"));
La fonction readTextFromFile renvoi tout le texte du fichier, il faut ensuite utiliser un Split pour diviser la chaine en plusieurs en utilisant le séparateur saut de ligne (\n).
Merci encore poru ton aide
donc ca je fais quoi exactement?
et dans mon fichier liste.txt j'ai que des urls separés par des ;
Code : Sélectionner tout - Visualiser dans une fenêtre à part var urls_block =???(readTextFromFile("taliste.txt"));
que faut t'il que je mette avant les urls et en fin d'urls? rien?
Si elles sont séparées par des points virgules:
Code : Sélectionner tout - Visualiser dans une fenêtre à part var urls_block = readTextFromFile("taliste.txt").Split(';');
Rebonjour donc atuellement j'ai ceci
dans mon fichier externe url.txt
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 const {classes: Cc, interfaces: Ci, utils: Cu, results: Cr} = Components; Cu.import('resource://gre/modules/Services.jsm'); var 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(); } }
mes urls sont comem ceci:
'url01',
'url03',
etc...
mais mon addon ne bloque plus ces urls
Tu peux déboguer le code en utilisant la "boite à outils du navigateur" disponible via le menu outils, développent web.
(il y a un champ pour rechercher un script par son nom)
De cette façon tu peux vérifier que le chargement se passe comme il faut (en modifiant ce qui ne va pas).
Le chargement des URLs doit être fait uniquement au premier test et non au chargement du module pour ne pas ralentir Firefox.
Initialiser la variable à null:
puis au début de la fonction observe charger les URLs si besoin:
Code : Sélectionner tout - Visualiser dans une fenêtre à part var urls_block = null;
Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 if(!urls_block) { urls_block = readTextFromFile("url.txt").Split(','); }
je lance le module ardoise javascript quand j'analyse mon script ca me dit en fin de fichier
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(); } }
/*
Exception: redeclaration of const Cc
@Scratchpad/1:1:17
WCA_evalWithDebugger@resource://gre/...lkit/loader.js -> resource://gre/modules/devtools/server/actors/webconsole.js:1122:16
WCA_onEvaluateJS@resource://gre/modu...lkit/loader.js -> resource://gre/modules/devtools/server/actors/webconsole.js:750:20
DSC_onPacket@resource://gre/modules/...lkit/loader.js -> resource://gre/modules/devtools/server/main.js:1233:15
LocalDebuggerTransport.prototype.send/<@resource://gre/modules/devtools/dbg-client.jsm -> resource://gre/modules/devtools/transport/transport.js:545:11
makeInfallible/<@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/DevToolsUtils.js:83:14
makeInfallible/<@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/DevToolsUtils.js:83:14
Histoire de faire avancer le schmilblick, j'ai testé :
readTextFromFile - Je pense qu'il faut copier le source de la fonction dans le code, elle n'était pas définie dans mon environnement. Ensuite, je n'ai jamais pu trouver comment intégrer 'require' qui semble aussi non définie. Je pense, mais je ne l'ai pas validé, qu'il faut installer le sdk pour que ça fonctionne et générer le add-on à partir du sdk. En passant, '.split' s'écrit avec un 's' minuscule.
Sinon il y a une alternative https://developer.mozilla.org/en-US/...XMLHttpRequest
edit:10/01/2015-1050 - retrait code inutile
Code : Sélectionner tout - Visualiser dans une fenêtre à part const {classes: Cc, interfaces: Ci, utils: Cu, results: Cr} = Components;Il faut donc changer le nom des constantes que tu utilises. (Cc, Ci, Cu, Cr)Exception: redeclaration of const Cc
Essayes de lire les messages d'erreur, de les comprendre et d'essayer de corriger les erreurs toi-mêmes.
C'est pas faux
edit:10/01/2015-10:50
Partager