Alternativa JavaScript-based al linguaggio jScript f (x) = y utilizzato quando si impostano le opzioni CDO.Message

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

Domanda

Ho una pagina ASP scritta in JScript che invia e-mail usando CDO.Message. Per specificare un server SMTP (e altre opzioni) sto facendo qualcosa del genere:

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

Ora, ecco che arriva il trucco. Ho questo codice in un file di inclusione autonomo che includo in una pagina HTML come JavaScript in modo da poter eseguire test unitari su di esso in un browser (utilizzando JsUnit ecc.). Ho oggetti fittizi JavaScript (Server, Request, ecc.) Che creano un ambiente ASP finto per il codice JScript incluso. L'unico problema che mi rimane è con l'impostazione dell'opzione CDO.Message. Poiché la sintassi f (x) = y utilizzata nell'estratto del codice sopra riportato non è JavaScript valido (operando di sinistra non valido), non posso eseguire questo pezzo di codice (così com'è) all'interno un browser. Attualmente sto semplicemente bypassandolo nel mio test unit con un condizionale che rileva se l'ambiente è veramente ASP.

Non credo che ci sia una soluzione alternativa a JavaScript per questo. Sto cercando una sintassi alternativa (che potrebbe utilizzare le interfacce ActiveX in modo diverso) per impostare le opzioni CDO.Message che sarebbero anche JavaScript sintatticamente valido.

È stato utile?

Soluzione

Ho capito la risposta guardando l'esempio di codice C ++ in http://msdn.microsoft.com/en-us/library/ms526318 (EXCHG.10) .aspx .

La soluzione è effettuare esplicitamente l'assegnazione alla proprietà Value :

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

In questo modo, il codice sopra è JavaScript valido che può essere testato con un oggetto di configurazione finto.

Altri suggerimenti

Ho avuto lo stesso problema durante la scrittura di Javascript lato server per IIS, che la sintassi f (x) = y non riusciva nel controllo della sintassi del mio IDE. La soluzione che ho trovato utile erano i commenti condizionali di JScript in questo modo:

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

Mette l'indice dei pedici [0] alla fine tranne quando è in esecuzione nel motore JScript di Microsoft. Ma, certamente, la mia soluzione è un po 'confusa. Penso che nella maggior parte dei casi il tuo sia più pulito, quindi grazie per averlo condiviso.

-Simon

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top