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



              

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


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

field

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

probe

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

folder

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

trash

True, если сообщение нужно поместить в папку 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;
      }
   }
}









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