Executar o JavaScript nas janelas

pensei que para alguns testes simples que apenas executam alguns comandos eu iria tentar usar algum JavaScript e executá-lo a partir da linha de comandos no Windows XP.

Então para um teste rápido criei um script

alert('Hello, World!');

depois tentei executá-lo

D:\>Cscript.exe hello.js
Microsoft (R) Windows Script Host Version 5.7
Copyright (C) Microsoft Corporation. All rights reserved.

D:\hello.js(1, 1) Microsoft JScript runtime error: Object expected
O Google não ajudou e tenho a certeza de que me está a escapar algo estúpido. algum de vocês pode esclarecer porque é que este guião simples não funciona?

Author: j08691, 2012-08-21

5 answers

Estás a chamar a uma função chamada alert, mas isto não faz parte do JavaScript (faz parte do DOM 0 e é fornecido por navegadores)

Como ainda não o definiste, estás a tentar tratar undefined como uma função, o que não é.

Qnan sugere usar o métodoEcho em vez disso.

 16
Author: Quentin, 2012-08-21 15:57:38

Tente uma substituição de função com nome, dado que o WSH não suporta a janela.método de alerta.

if (!alert) alert = function foo(s){WScript.Echo(s)}
alert("hello world");
 6
Author: mplungjan, 2015-09-09 11:49:35

Uma boa abordagem é redirecionar toda a saída usual como em um exemplo a seguir. Ele permitirá que você teste JavaScript projetado para web sem precisar reescrever.

Teste.js

var console = {
    info: function (s){
        WSH.Echo(s);
    }
}
var document = {
    write : function (s){
        WSH.Echo(s);
    }
}
var alert = function (s){
    WSH.Echo(s);
}

console.info("test");
document.write("test2");
alert("test3");

Podes chamar o guião assim:

Cscript.exe test.js firstParam secondParam

Que te dará:

test
test1
test2
 4
Author: volkinc, 2016-01-17 14:27:16

alert is a method of the browswer's window object. A máquina de scripting da janela não fornece tal objeto.

 1
Author: Scott Sauyet, 2012-08-21 15:49:12

O compilador JScript da Microsoft não fornece os popups nativos de JavaScript, tal como encontrados no DOM (Document Object Model), que é suportado por todos os navegadores principais de hoje. No entanto, isto pode ser feito se envolver uma função (no seu caso alert) em torno do nativo MessageBox encontrado no WSH (Máquina de programação do Windows) como com qualquer outra linguagem de programação suportada pelo WSH.

Mas só para te dar uma opção mais fácil... tente DeskJS . É um novo aplicativo de estilo console para Windows que é projetado para executar JavaScript puro (ECMAScript 5.1 como de momento) longe do navegador e suporta todas as caixas de contexto JavaScript básicas, juntamente com outras adições nifty para a linguagem. Você pode simplesmente amá-lo mais do que a consola do navegador...
 1
Author: cringy, 2016-01-14 21:04:28