Marker dubletter i Yahoo! Mail via sortering
Jeg har lavet noget kode, som skulle finde og markere dubletter, i den mappe man har valgt, hos Yahoo! Mail.Koden afvikles via en bookmark eller en knap (button) på en værktøjslinie (toolbar).
Scriptet er til private brug, og vil kun blive brugt i browseren Opera (lokalt).
Instruktioner:
1) Tilføj et bookmark eller en knap (button) til en værktøjslinie (toolbar).
2) I bookmarket's adresse-felt indsættes (uden ""): "java script:INDSÆST-KODEN-HER;void(0)"
Det nemmeste er at skrive (uden "") "java script:;void(0)" og derefter indsætte koden, i stedet for "INDSÆST-KODEN-HER".
3) Åben Yahoo! Mail (kan sikkert også bruges med andre mailsystemer).
4) Vælg en mappe, med en masse (masse = 2+) mails, med samme emne/subject (bogstavligt). F.eks. mails fra eksperten.dk ("nyt indlæg").
5) Sorter mappen efter emne/subject, og sortering skal være faldende (?), dvs "nyeste øverst"-sortering.
6) Aktiver scriptet (klik på bookmark eller knap).
Nu skulle den gerne markere alle dubletterne i mappe. Se lige om den markere de rigtige, og ikke andre end dem.
Jeg har en mappe til indlæg fra eksperten.dk. I denne mappe virker scriptet fint nok.
Men den gør det forkert i f.eks. "Sent"-mappen (afsendte mails). Den markerer godt nok dem der skal markeres, men den markerer også andre.
Det ligner at den siger "det ligner" i stedet for "det er"..
Selve koden:
if (document.messageList) { /* koden skal kun afvikles, hvis formen eksisterer */
var c = new Array(); /* opret et nyt array kaldet "c" (for "checkbox") */
var locCheckbox = 0; /* positionen (location) af den første checkbox, i elementlisten */
e = document.messageList.elements; /* "e" indeholder elementerne (samlingen) */
for (i=0;i<e.length;i++) /* kør en loop fra 0 og til antallet af elementer */
{
if (c.length == 0) { locCheckbox++; } /* så længe array'en er tom, læg 1 til positionen i elementlisten */
if (e[i].type == "checkbox") { c[i] = e[i]; } /* hvis det nuværende element er en checkbox, tilføj den til arrayen */
}
locCheckbox--; /* træk 1 position fra, da vi ellers har 1 for meget */
var cur_subj = ""; /* opret variablen, der skal indeholde det nuværende emne/subject */
var old_subj = ""; /* opret variablen, der skal indeholde emnet/subject, der skal sammenlignes med */
var array_mail = document.body.innerHTML.split('name="Mid"'); /* hent HTML indeholdet af siden/body, og split det ved name="Mid" */
for(i=1; i< array_mail.length; i++) { /* start en loop fra 0 og til længden af "indhold"-arrayen (mailene) */
cur_subj = array_mail[i]; /* læg den nuværende mail (HTML kode) over i variablen curr_subj */
cur_subj = cur_subj.substring(cur_subj.indexOf("&box")); /* hop til positionen af "&box" i HTML koden */
cur_subj = cur_subj.substring(cur_subj.indexOf(">") + 1); /* hop til position af ">" + 1. Her starter emnet */
cur_subj = cur_subj.replace("\n ", ""); /* Fjern linieskift ("\n") og mellemrum der står før emnet, i HTML koden */
cur_subj = cur_subj.substring(0, cur_subj.indexOf("\n")); /* reducer strengen, indtil den næste linieskift */
if (old_subj == cur_subj) { /* check om det nuævrende emne er det samme som det gamle */
c[i+locCheckbox].click(); /* de er ens: marker den nuværende mail */
} else {
old_subj = cur_subj; /* de er forskellige: sæt den gamle til at være den nuværende */
}
}
}
