设置 CDO.Message 选项时使用的 f(x) = y JScript 习惯用法的 JavaScript 友好替代方案
-
19-08-2019 - |
题
我有一个用 JScript 编写的 ASP 页,它使用 CDO.Message 发送电子邮件。为了指定 SMTP 服务器(和其他选项),我正在执行以下操作:
mail.Configuration.Fields.Item(
"http://schemas.microsoft.com/cdo/configuration/smtpserver") =
"smtp.example.com";
现在,问题来了。我将此代码放在一个独立的包含文件中,并将其作为 JavaScript 包含在 HTML 页面中,以便我可以在浏览器中对其运行单元测试(使用 JsUnit 等)。我有 JavaScript 模拟对象(服务器、请求等),它们为包含的 JScript 代码创建模拟 ASP 环境。我剩下的唯一问题是 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]上的端部的除了在微软的JScript引擎运行时。但是,无可否认我的解决方案是一个有点哈克。我认为,在大多数情况下,你的是更清洁,十分感谢分享。
-Simon