alternativa JavaScript-friendly ao f (x) = y JScript idioma que é usada a configuração de opções CDO.Message

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

Pergunta

Eu tenho uma página ASP escrito em JScript que envia e-mails usando CDO.Message. Para especificar um servidor SMTP (e outras opções) eu estou fazendo algo parecido com isto:

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

Agora, aqui vem a captura. Eu tenho esse código em um stand-alone arquivo de inclusão que eu incluir em uma página HTML como JavaScript para que eu possa executar testes de unidade contra ele em um navegador (usando JsUnit etc.). Eu tenho objetos mock JavaScript (servidor, pedido, etc.) que criam um ambiente ASP simulada para o código JScript incluído. O único problema que resta é com a configuração da opção CDO.Message. Desde a sintaxe f(x) = y que é usado no trecho de código acima não é válido JavaScript (inválido operando à esquerda), não pode executar este pedaço de código (como é) dentro de um navegador. Atualmente estou simplesmente ignorando-o no meu teste de unidade com uma condicional que detecta se o ambiente é verdadeiramente ASP.

Eu não acho que há uma solução JavaScript para isso. Eu estou procurando uma sintaxe alternativa (que podem usar as interfaces ActiveX de forma diferente) para a definição de opções CDO.Message que também seriam sintaticamente válido JavaScript.

Foi útil?

Solução

Eu descobri a resposta quando se olha para o C ++ exemplo de código em http://msdn.microsoft.com/en-us/library/ms526318 (EXCHG.10) .aspx .

A solução é fazer com que a atribuição explícita à propriedade Value:

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

Desta forma, o código acima é válido JavaScript que pode ser testado com um objeto de configuração simulada.

Outras dicas

Eu tenho tido o mesmo problema ao escrever do lado do servidor Javascript para o IIS, que a sintaxe f(x) = y estava falhando em verificador de sintaxe do meu IDE. A solução que eu encontrei útil foi JScript comentários condicionais assim:

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

Ela coloca o índice subscrito [0] na extremidade , exceto quando executado no mecanismo JScript, da Microsoft. Mas, é certo que a minha solução é um pouco hacky. Eu acho que na maioria dos casos o seu é mais limpo, por isso obrigado por compartilhá-lo.

-Simon

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top