Дружественная к JavaScript альтернатива идиоме JScript f(x) = y, которая используется при настройке параметров CDO.Message.
-
19-08-2019 - |
Вопрос
У меня есть страница 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.Но, по общему признанию, мое решение немного хакерское.Я думаю, что в большинстве случаев у вас чище, поэтому спасибо, что поделились.
-Саймон