Клиентский JavaScript 1.3

         

Более сложный пример


Этот файл фильтра даёт Вам возможность легко выполнять различные изменения сообщения. Сначала используются инициализаторы объектов для создания массива объектов. Каждый их этих объектов представляет набор сообщений и действия функции с сообщениями этого набора. Эти объекты могут иметь следующие свойства:

field Поле, относительно которого выполняется подстановка (такое как From или Resent-From).

probeЗначение совпадающего поля.

folderПочтовая папка, в которую поместить сообщение.

trashTrue, если сообщение нужно поместить в папку Trash.

priorityНовый приоритет сообщения.

После получения массива фильтров, код создаёт из этих фильтров регулярные выражения для использования при подстановках к конкретным сообщениям. Если Messenger вызывает ApplyFilters для сообщения, производится поиск совпадений в массиве MyFilters. Если совпадение найдено, функция помещает сообщение в trash, перемещает сообщение в новую папку или изменяет приоритет сообщения.

var MyFilters = [
   {field:"From",        probe:"cltbld@netscape.com",      folder:"mailbox:Client Build"},
   {field:"From",        probe:"scopus@netscape.com",      folder:"mailbox:Scopus"},
   {field:"Resent-From", probe:"bonsai-hook@warp.mcom.com", trash:true"},
   {field:"Resent-From", probe:"xheads@netscape.com",       folder:"mailbox:X Heads"},
   {field:"Resent-From", probe:"layers@netscape.com",       priority:"High"}
];// Инициализация путём компиляции регулярного выражения для каждого фильтра
for (var i = 0; i < MyFilters.length; i++) {
   var f = MyFilters[i];
   f.regexp = new RegExp("^" + f.field + " *:.*" + f.probe, "i");
}function ApplyFilters(message)
{
   trace("Applying mail filters");   for (var i = 0; i < MyFilters.length; i++) {
      var f = MyFilters[i];
      if (f.regexp.test()) {
         if (f.trash) {
            message.trash();
         } else if (f.folder) {
            message.folder = f.folder;
         } else {
            message.priority = f.priority;
            continue;
         }
         break;
      }
   }
}



Содержание раздела