Дружественная к JavaScript альтернатива идиоме JScript f(x) = y, которая используется при настройке параметров CDO.Message.

StackOverflow https://stackoverflow.com/questions/468089

Вопрос

У меня есть страница ASP, написанная на JScript, которая отправляет электронную почту с помощью CDO.Message.Для указания SMTP-сервера (и других параметров) я делаю что-то вроде этого:

mail.Configuration.Fields.Item(
    "http://schemas.microsoft.com/cdo/configuration/smtpserver") =
    "smtp.example.com";

Теперь вот в чем загвоздка.У меня есть этот код в отдельном включаемом файле, который я включаю в HTML-страницу как JavaScript, чтобы я мог запускать модульные тесты для него в браузере (используя JsUnit и т. д.).У меня есть фиктивные объекты JavaScript (сервер, запрос и т. д.), которые создают фиктивную среду ASP для включенного кода JScript.Единственная проблема, которая у меня осталась, связана с настройкой опции CDO.Message.Поскольку f(x) = y Синтаксис, использованный в приведенном выше фрагменте кода, недействителен. JavaScript (недопустимый левый операнд), я не могу запустить этот фрагмент кода (в том виде, в каком он есть) в браузере.В настоящее время я просто обхожу это в своем модульном тесте с помощью условия, которое определяет, действительно ли среда является ASP.

Я не думаю, что есть обходной путь JavaScript.Я ищу альтернативный синтаксис (который может использовать интерфейсы ActiveX по-другому) для установки параметров CDO.Message, который также будет синтаксически допустимым JavaScript.

Это было полезно?

Решение

Я выяснил ответ, посмотрев пример кода на C ++ по адресу http://msdn.microsoft.com/en-us/library/ms526318 (EXCHG.10) .aspx .

Решение состоит в том, чтобы явно назначить присваивание свойству Value:

mail.Configuration.Fields.Item(
    "http://schemas.microsoft.com/cdo/configuration/smtpserver").Value =
    "smtp.example.com";

Таким образом, приведенный выше код является допустимым JavaScript, который можно протестировать с помощью фиктивного объекта конфигурации.

Другие советы

У меня возникла та же проблема при написании серверного Javascript для IIS. f(x) = y синтаксис не работал при проверке синтаксиса моей IDE.Решением, которое я нашел полезным, были условные комментарии JScript, например:

f(x)/*@cc_on@if(0)*/[0]/*@end@*/ = y;

Он помещает индекс нижнего индекса [0] в конец кроме при работе в движке Microsoft JScript.Но, по общему признанию, мое решение немного хакерское.Я думаю, что в большинстве случаев у вас чище, поэтому спасибо, что поделились.

-Саймон

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top