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

У меня есть 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.

Ответы [ 2 ]

2 голосов
/ 22 января 2009

Я разобрался с ответом, глядя на пример кода 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, который можно протестировать с помощью фиктивного объекта конфигурации.

1 голос
/ 14 января 2013

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

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

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

-Simon

...