1

CDO.Message を使用して電子メールを送信する JScript で記述された ASP ページがあります。SMTP サーバー (およびその他のオプション) を指定するために、私は次のようなことをしています:

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

さて、ここでキャッチが来ます。このコードはスタンドアロンのインクルード ファイルにあり、JavaScript として HTML ページにインクルードして、ブラウザーで単体テストを実行できるようにします (JsUnit などを使用)。含まれている JScript コード用のモック ASP 環境を作成する JavaScript モック オブジェクト (サーバー、リクエストなど) があります。私が残した唯一の問題は、CDO.Message オプションの設定に関するものです。上記のコードの抜粋で使用されているf(x) = y構文は有効な JavaScript ではない (無効な左側のオペランド) ため、このコードを (そのままで) ブラウザー内で実行することはできません。私は現在、環境が本当に ASP であるかどうかを検出する条件を使用して、単体テストで単純にバイパスしています。

これに対する JavaScript の回避策はないと思います。構文的に有効な JavaScript でもある CDO.Message オプションを設定する代替構文 (ActiveX インターフェイスを別の方法で使用する可能性がある) を探しています。

4

2 に答える 2

3

http://msdn.microsoft.com/en-us/library/ms526318(EXCHG.10).aspxで C++ コード例を見て、答えを見つけました。

Value解決策は、プロパティに明示的に割り当てを行うことです。

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

このように、上記のコードは有効な JavaScript であり、モックの Configuration オブジェクトでテストできます。

于 2009-01-22T17:24:33.987 に答える
1

IIS用のサーバー側のJavascriptを作成するときに同じ問題が発生しました。そのf(x) = y構文は、IDEの構文チェッカーで失敗していました。私が役に立った解決策は、次のようなJScript条件付きコメントでした。

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

MicrosoftのJScriptエンジンで実行している場合を除いて、添え字インデックス[0]を最後に配置します。しかし、確かに私の解決策は少しハッキーです。ほとんどの場合、あなたの方がきれいだと思いますので、共有していただきありがとうございます。

-サイモン

于 2013-01-14T06:06:53.637 に答える