Alternative JavaScript à l'idiome JScript f (x) = y utilisé lors de la définition des options CDO.Message

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

Question

J'ai une page ASP écrite en JScript qui envoie des courriers électroniques à l'aide de CDO.Message. Pour spécifier un serveur SMTP (et d'autres options), je fais quelque chose comme ceci:

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

Maintenant, voici le piège. J'ai ce code dans un fichier d'inclusion autonome que j'inclus dans une page HTML en tant que JavaScript pour pouvoir exécuter des tests unitaires dans un navigateur (à l'aide de JsUnit, etc.). J'ai des objets fictifs JavaScript (serveur, requête, etc.) qui créent un environnement fictif ASP pour le code JScript inclus. Le seul problème qui me reste est lié au paramètre d’option CDO.Message. Comme la syntaxe f (x) = y utilisée dans l'extrait de code ci-dessus n'est pas valide, JavaScript (opérande de gauche non valide), je ne peux pas exécuter ce morceau de code (tel quel) dans un navigateur. À l'heure actuelle, je le contourne simplement dans mon test unitaire avec un conditionnel qui détecte si l'environnement est véritablement ASP.

Je ne pense pas qu'il existe une solution de contournement JavaScript à cela. Je cherche une autre syntaxe (qui pourrait utiliser les interfaces ActiveX différemment) pour définir des options CDO.Message qui seraient également des scripts JavaScript corrects sur le plan syntaxique.

Était-ce utile?

La solution

J'ai trouvé la réponse en consultant l'exemple de code C ++ à http://msdn.microsoft.com/en-us/library/ms526318 (EXCHG.10) .aspx .

La solution consiste à attribuer explicitement l'affectation à la propriété Value :

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

Ainsi, le code ci-dessus est un code JavaScript valide pouvant être testé avec un objet de configuration fictif.

Autres conseils

J'ai rencontré le même problème lors de l'écriture de Javascript côté serveur pour IIS: la syntaxe de f (x) = y échouait dans le vérificateur de syntaxe de mon IDE. La solution que j’ai trouvée utile était les commentaires conditionnels JScript tels que:

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

Il met l'index indice [0] à la fin sauf lorsqu'il est exécuté dans le moteur JScript de Microsoft. Mais, certes ma solution est un peu hacky. Je pense que dans la plupart des cas, le vôtre est plus propre, alors merci de le partager.

-Simon

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top