Vow Posté(e) le 13 novembre 2007 Partager Posté(e) le 13 novembre 2007 Bonjour Voilà, j'ai repris le plugin CookieCleaner pour faire quelquechose de plus intéractif. J'ai entre autre changé le fichier d'accueil par un nouveau , mis l'ancien (qui permettait de configurer les blacklist/whitelist, j'ai même corrigé une belle erreur) en première option du bouton. Le nouveau fichier permet de supprimer automatiquement les cookies de la blacklist. Et j'aimerais également qu'il prévienne lorsque des cookies existants n'ont pas été ajoutés dans une des deux listes. La détection fonctionne, mais je ne sais pas comment prévenir discrètement (c'est-à-dire autrement qu'un alert() ou un pop-up) Voici les deux solutions que j'avais retenu (mais que je n'arrive pas à réaliser) : * Solution 1 : afficher un calque en DIV sur l'onglet courant, en haut à gauche de l'écran external.get_tab(%max_security_id,external.cur_sel).document.write ('<DIV NAME="CookieAlert" ID="CookieAlert" style="position: absolute; top: 1 px; left: '+(screen.width - 200)+' px; height: 50 px; width: 150 px; visibility: visible; font-family: arial, sans-serif; background-color: yellow; font-size: 18pt; color: black; "><CENTER>Cookies inconnus</CENTER> <DIV NAME="CookieAlertClose" style="position: absolute; top: -3 px; left: 120 px; visibility: inherit; font-family: arial, sans-serif; font-size: 14pt; "><A HREF="#" onclick="CookieAlert.style.visibility = \'hidden\'; " style="text-decoration:none; color: red; ">[X]</A></DIV></DIV>'); Sauf que ça efface tout le contenu de la page (pareil en faisant simplement "document.write"). J'ai également essayé en passant par : elmnt=external.get_tab(%max_security_id,external.cur_sel).document.createElement('<DIV ....'); external.get_tab(%max_security_id,external.cur_sel).document.documentElement.appendChild(elmnt); Mais là, rien ne se passe J'ai même essayé simplement en enlevant les "external.get_tab(%max_security_id,external.cur_sel).", rien non plus... * Solution 2 : lancer la fichier html de configuration var reg_exp="\\"; var chemin = external.m2_plugin_folder(%max_security_id,'CookieCleaner') + 'cookiecleaner.html'; while(chemin.indexOf(reg_exp) > 0) { chemin = chemin.replace(reg_exp, "/"); } var w=window.open('file://'+chemin,'_CookieCleaner_'); Je sais très bien que le "window.open" ne pourra pas fonctionner puisqu'on utilise du code compréhensible qu'en étant plugin Maxthon, comme "%max_security_id" et l'objet "external". Mais je n'ai pas trouvé de code permettant d'exécuter un fichier HTML du plugin... Sinon, j'ai aussi un soucis : lorsque j'active le plugin au chargement des pages, je ne comprends pas pourquoi chaque nouvel onglet ouvert est activé (ça ne le fait pas à chaque fois, mais presque). Pourtant je n'utilise pas "external.get_tab" ou autre fonction d'onglet dans mon code : <script language="javascript"> function replacer(x){ return x.replace(/\r\n/g,'|').replace(/\|$/g,'').replace(/\|\|/g,'|').replace(/\|[^|]\|/g,'') } (function(){ var sid=%max_security_id var p_nm='CookieCleaner' var loc=external.m2_readIni(sid,p_nm,'plugin.ini','Settings','Folder','') var locCheck=external.m2_readIni(sid,p_nm,'plugin.ini','Settings','AlwaysCheckCookieLocation','false') var v_date=external.m2_readIni(sid,p_nm,'plugin.ini','Settings','ViewTheDate','false') var stop=false try{ external.m2_callerName(sid,p_nm) //var w=window.open('about:blank','_blank') var objShell=external.max_activex(sid,"Shell.Application") var sfo=external.max_activex(sid,"Scripting.FileSystemObject") var shell=external.max_activex(sid,"WScript.Shell") } catch(err){ alert('This function is for Maxthon 1.2.1 and higher!') stop=true } if(loc==''||locCheck=='true') { try{ loc=shell.regRead('HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders\\Cookies'); external.m2_writeIni(sid,'CookieCleaner','plugin.ini','Settings','Folder',loc) } catch(err) { alert('Set your Cookie Folder!');stop=true } } if(!stop) { var a,f,s='' var bl_list=replacer(external.readFile(sid,p_nm,"blacklist.txt")) if(bl_list=='') bl_list='lakdsjfoiajefjlskjeafij' var wh_list=replacer(external.readFile(sid,p_nm,"whitelist.txt")) if(wh_list=='') wh_list='lakdsjfoiajefjlskjeafij' try{ var f=new Enumerator(sfo.GetFolder(loc).files); } catch(err) { alert('Can\'t open the cookie folder!'); return } var bNewCookies = false for(; !f.atEnd(); f.moveNext()) { i=(f.item()+'').replace(/.*\\(.*?)/g,'$1') if(i.search(/\.txt/i)!=-1) { if (i.replace(/.*?@/,'').replace(/\.txt/,'').replace(/\[[0-9]\]/,'').search(bl_list)!=-1) { try { sfo.DeleteFile(loc+'\\'+i) //delete the file } catch(err) { alert('Cannot delete \''+i+'\''); } } else if (i.replace(/.*?@/,'').replace(/\.txt/,'').replace(/\[[0-9]\]/,'').search(wh_list)==-1) // Recherche de nouveaux cookies (non référencés) bNewCookies = true; } } if (bNewCookies == true) // Cookies non référencés { } } }()) </script> Si une humble âme généreuse pouvait m'aiguiller Merci d'avance Lien vers le commentaire Partager sur d’autres sites More sharing options...
Vow Posté(e) le 14 novembre 2007 Auteur Partager Posté(e) le 14 novembre 2007 Bonsoir à tous J'ai "enfin" trouvé comment afficher un "popup incrusté". Ce code Javascript permet de remplacer le code HTML suivant : <DIV NAME="CookieAlert" ID="CookieAlert" style="position: absolute; top: 1 px; left: '+(screen.width - 200)+' px; height: 50 px; width: 150 px; visibility: visible; font-family: arial, sans-serif; background-color: yellow; font-size: 18pt; color: black; "><CENTER>Cookies inconnus</CENTER> <DIV NAME="CookieAlertClose" style="position: absolute; top: -3 px; left: 120 px; visibility: inherit; font-family: arial, sans-serif; font-size: 14pt; "><A HREF="#" onclick="window.close()" style="text-decoration:none; color: red; ">[X]</A></DIV></DIV> var elmnt = document.createElement("div"); var attrib = document.createAttribute("name"); attrib.nodeValue = "CookieAlert"; elmnt.setAttributeNode(attrib); attrib = document.createAttribute("id"); attrib.nodeValue = "CookieAlert"; elmnt.setAttributeNode(attrib); elmnt.style.position = "absolute"; elmnt.style.top = "1 px"; elmnt.style.left = (screen.width - 200) +" px"; elmnt.style.height = "50 px"; elmnt.style.width = "150 px"; elmnt.style.visibility = "visible"; elmnt.style.fontFamily = "arial, sans-serif"; elmnt.style.backgroundColor = "yellow"; elmnt.style.fontSize = "18pt"; elmnt.style.color = "black"; var ssElm = document.createElement("center"); var elmntTxt=document.createTextNode("Cookies inconnus"); ssElm.appendChild(elmntTxt); elmnt.appendChild(ssElm); ssElm = document.createElement("div"); attrib = document.createAttribute("name"); attrib.nodeValue = "CookieAlertClose"; ssElm.setAttributeNode(attrib); attrib = document.createAttribute("id"); attrib.nodeValue = "CookieAlertClose"; ssElm.setAttributeNode(attrib); ssElm.style.position = "absolute"; ssElm.style.top = "-3 px"; ssElm.style.left = "120 px"; ssElm.style.visibility = "inherit"; ssElm.style.fontSize = "14pt"; var link = document.createElement("a"); link.href = "#"; link.style.color = "red"; link.style.textDecoration = "none"; link.onclick = function() { CookieAlert.style.visibility = 'hidden'; return false; }; elmntTxt=document.createTextNode("[X]"); link.appendChild(elmntTxt); ssElm.appendChild(link); elmnt.appendChild(ssElm); document.body.appendChild(elmnt); } else if (document.getElementById('CookieAlert').style.visibility == "hidden") document.getElementById('CookieAlert').style.visibility = "visible"; Par contre, je n'ai toujours rien trouvé sur l'activation intempestive des nouveaux onglets. Vraiment personne n'a d'idée à ce sujet ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dixours Posté(e) le 15 novembre 2007 Partager Posté(e) le 15 novembre 2007 Salut Vow ! Pas facile de prendre ton travail en marche car je n'ai pas un aperçu global. L'idéal serait que tu nous joignes ta version béta pour qu'on puisse parcourir ton code dans l'ensemble (tu peux joindre une archive à tes messages). Je ne comprends pas bien ton problème d'onglet. Néanmoins, comme tu parles "d'onglet activé" ceci pourrait être à l'origine de ton "bug" : var w=window.open('about:blank','_blank') Tu lui demandes ici d'ouvrir un nouvel onglet. Cette ligne de code est-elle toujours présente dans ton plugin ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Vow Posté(e) le 15 novembre 2007 Auteur Partager Posté(e) le 15 novembre 2007 Salut Vow ! Pas facile de prendre ton travail en marche car je n'ai pas un aperçu global. L'idéal serait que tu nous joignes ta version béta pour qu'on puisse parcourir ton code dans l'ensemble (tu peux joindre une archive à tes messages). Je ne comprends pas bien ton problème d'onglet. Néanmoins, comme tu parles "d'onglet activé" ceci pourrait être à l'origine de ton "bug" : var w=window.open('about:blank','_blank') Tu lui demandes ici d'ouvrir un nouvel onglet. Cette ligne de code est-elle toujours présente dans ton plugin ? Salut Elle était en commentaire, elle l'est toujours, il me semble. Je mets mon code en pièce jointe, mais il n'a pas vraiment changé par rapport à celui que j'avais affiché en premier message. Merci pour ton aide en tout cas [€DIT] Finalement je mets tout le code en pièce jointe [/€DIT] CookieCleaner_1.2b_.zip Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dixours Posté(e) le 15 novembre 2007 Partager Posté(e) le 15 novembre 2007 OK, j'ai pigé ton problème En fait, quand tu ouvres une boite (par exemple "select cookie folder") il y a d'abord un nouvel onglet qui s'ouvre avant de laisser place à la boite, c'est bien ça ton problème ? Je vais regarder ton code et je te tiens au courant si j'ai une réponse Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dixours Posté(e) le 15 novembre 2007 Partager Posté(e) le 15 novembre 2007 J'ai commencé à regarder ton code et déjà voilà mes premières remarques : Fichier Setfolder.html : var w=window.open('about:blank','_blank') Tu demandes d'ouvrir un nouvel onglet ! Si tu supprimes cette ligne, tu n'ouvres pas un nouvel onglet. En revanche, l'onglet en cours est effacé. On va corriger ce comportement ensuite. external.get_tab(sid,external.cur_sel).close() Tu fermes l'onglet ouvert avec la 1ère ligne de code. Donc pas de mystère, ces 2 lignes sont responsables de ton onglet qui apparait et disparait. Cependant, avec ton code actuel, tu as besoin d'ouvrir ce nouvel onglet "vierge". Je vais regarder plus en profondeur dès que j'ai du temps pour corriger ce petit bug Je ne te promets rien ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dixours Posté(e) le 15 novembre 2007 Partager Posté(e) le 15 novembre 2007 Probleme résolu : supprimes les 2 lignes de code précédentes dans le fichier "SetFolder.html" var w=window.open('about:blank','_blank') et external.get_tab(sid,external.cur_sel).close() Cliques sur ton plugin et choisis l'option "Set Cookie Folder", voilà, plus d'onglet ouvert ! Fais de même pour le reste du code et ca devrait le faire ! (fichier "CookieCleaner.html"). Par contre, ne touche pas au fichier "managelists.html" Bon, c'est provisoire mais ca marche, on regardera mieux ensuite ! Je suis désolé, je manque de temps dans l'immédiat Lien vers le commentaire Partager sur d’autres sites More sharing options...
Vow Posté(e) le 15 novembre 2007 Auteur Partager Posté(e) le 15 novembre 2007 Merci dixours pour ta dévotion (j'espère que je ne serais pas dévoré pour te remercier ...) Donc, en fait, ce n'est pas trop ça mon soucis. Je vais essayer de mieux expliquer. J'ai désactivé l'option "Activer nouvel onglet", car je préfère rester sur la page courante lorsque je clique sur un lien vers un nouvelle fenêtre : Lorsque j'active le plugin au chargement de la page (voir copie d'écran ci-dessous), ça a pour effet de faire le contraire (sauf une fois de temps en temps où ça redevient normal) : Tu vois ce que je veux dire ? Ca ne peut donc pas venir des autres fichiers HTML que celui indiqué dans la variable "FileName" de la section "General" de "plugin.ini". Soit "cookiecleaner_clean.html" (le code que j'avais mis l'autre jour). C'est pour cela que je ne comprends d'où vient ce dysfonctionnement Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dixours Posté(e) le 16 novembre 2007 Partager Posté(e) le 16 novembre 2007 Ah OK ! Effectivement je n'avais pas pigé ton problème ! Et non, tu ne seras pas dévoré je te rassure, je suis plutôt du type : gentil nounours Bon, déjà, les 2 lignes de code ci-dessus peuvent être supprimées, ca améliore le comportement du plugin. Maintenant que j'ai compris ton problème, je vais de nouveau regarder ton code De tête (mais il faut que je vérifie), je crois que ton plugin fait appel à un fichier .js ("cookies.js" je crois) et de tête (décidément quelle mémoire !) il me semble que ce fichier contient des lignes qui pourraient être à l'origine de ton problème... Dès que j'ai un peu de temps je regarde tout ça et je te tiens au courant de mes découvertes ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Vow Posté(e) le 19 novembre 2007 Auteur Partager Posté(e) le 19 novembre 2007 Bonjour Et merci gentil nounours Désolé de ne répondre que maintenant. En fait, mon fichier principal n'appelle pas du tout "cookies.js". Je n'avais pas encore trouvé (à l'époque) comment intégrer un JS dans un plugin Maxthon, de manière "intégrée". Du coup, ça ne venait pas de ça. Donc j'y suis allé à la façon débutante : j'ai éliminé une grosse partie du code, puis j'ai testé. Tant que ça fonctionnait correctement, je remettais le code tel quel, petit à petit. J'en suis donc arrivé à trouver le responsable : il s'agirait de la fonction "external.readFile" var bl_list=replacer(external.readFile(sid,p_nm,"blacklist.txt")) Bref, je ne pense pas qu'il y ait de solution pour ça Vous avez peut-être des idées ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dixours Posté(e) le 19 novembre 2007 Partager Posté(e) le 19 novembre 2007 Salut ! A mon tour de m'excuser, j'ai manqué de temps ces derniers jours Tu m'étonnes un peu en incriminant cette fonction. Je vais regarder plus en profondeur pour déterminer ce que fait exactement la fonction "replacer". Mais en tout cas, la fonction "readfile" n'y est pour rien.... J'essaie de te tenir au jus le plus vite possible, mais j'avoue qu'en ce moment je ne contrôle pas tout dans mon emploi du temps de ministre Lien vers le commentaire Partager sur d’autres sites More sharing options...
Vow Posté(e) le 20 novembre 2007 Auteur Partager Posté(e) le 20 novembre 2007 Pas de soucis, il n'y a rien qui presse. Donc... d'après mes tests, ça vient bien readFile justement. En plus la fonction "replacer" ne fait rien de spécial : function replacer(x) { return x.replace(/\r\n/g,'|').replace(/\|$/g,'').replace(/\|\|/g,'|').replace(/\|[^|]\|/g,'') } Lien vers le commentaire Partager sur d’autres sites More sharing options...
Jimi Posté(e) le 8 février 2008 Partager Posté(e) le 8 février 2008 Salut Pas tout suivi mais pour ca : * Solution 2 : lancer la fichier html de configuration............. Je sais très bien que le "window.open" ne pourra pas fonctionner puisqu'on utilise du code compréhensible qu'en étant plugin Maxthon, comme "%max_security_id" et l'objet "external". Mais je n'ai pas trouvé de code permettant d'exécuter un fichier HTML du plugin... J'ai une solution que j'utilise dans tous mes plugins (si j'ai bien compris ce probleme ) :Pour ouvrir un fichier htm a partir d'un plugin, ou meme un sous menu drop du plugin : Tu a un fichier toto.htm que tu veux ouvrir 1) A partir du plugin : sid=%max_security_id;owin="";sp=external.readFile(sid,"NOMde tonPLUGIN","toto.htm"); sw=window.open(owin);sw.document.write(sp); On lit le fichier , on ouvre un onglet vide et on ecrit le contenu dedans. 2) A partir d'un sous menu drop, il faut creer un autre fichier qui contiendra le meme code. Et pour activer ce nouvel onglet : tc=external.tab_count; for(y=0;y<tc;y++){cur_url=external.get_tab(sid,y).document.title; if(cur_url=="Titre du fichier")external.activate_tab(sid,y)} On se base sur le titre du fichier qu'il faut mettre en concordance dans l'entete du toto.htm <title>nom</title> ( par le test url ca ne marche pas, il renvoie l'adresse de l'onglet précedent ) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Vow Posté(e) le 7 avril 2008 Auteur Partager Posté(e) le 7 avril 2008 Merci Jimi, et désolé de ne répondre que maintenant. Je pense que ta solution va m'aider (bien que j'avais utilisé ma 1ère solution jusque là). Par contre, j'ai toujours mon second soucis, celui de l'activation du nouvel onglet. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.