Erro ao executar o comando JavaScript window.open a partir de um arquivo em lotes

1

Estou tentando executar um comando JavaScript a partir da linha de comando, no Windows 7, usando um arquivo em lotes. O arquivo em lote é executado como administrador.

Estou tentando abrir uma janela do Internet Explorer 8 como parte de uma rotina mais longa. Se eu simplesmente chamar IEXPLORE.EXE em um arquivo em lotes sem usar JavaScript, o Internet Explorer 8 será aberto corretamente:

"C:\Program Files\Internet Explorer\IEXPLORE.EXE"

Se eu chamar um URL também, a página especificada será aberta:

"C:\Program Files\Internet Explorer\IEXPLORE.EXE" http://www.google.com

No entanto, se eu tentar usar JavaScript no arquivo em lotes, para controlar o tamanho e a localização da janela do Internet Explorer 8, uma janela do Internet Explorer será aberta, mas antes de terminar a abertura, a mensagem será cancelada com a mensagem 'Não é possível baixar. Erro não especificado. ':

"C:\Program Files\Internet Explorer\IEXPLORE.EXE" javascript:window.open("http://www.google.com","newwin","left=10,top=10,width=520,height=250");

O script ativo está habilitado nas opções do Internet Explorer.

A falha não parece ser causada pelo arquivo DOCOBJ.DLL que vem com versões mais antigas do Microsoft Office. Embora eu tenha instalado o Office no meu sistema, que está executando o Internet Explorer 8, então uma versão antiga do DOCOBJ.dll foi registrada, desde então eu cancelei o registro e registrei novamente o IEPROXY.DLL, mas a falha com window.open () persiste -

"C:\Program Files (x86)\Internet Explorer\ieproxy.dll"

Alguém pode sugerir o que eu estou negligenciando?

    
por Ed999 05.12.2011 / 13:42

3 respostas

1

Obrigado, Melikoth. Você me colocou no caminho certo. Um monte de tentativa e erro produziu esta solução, no Windows 7.

Isso usa escape de cursor.

Substitua todas as ocorrências de # por <

Conteúdo do OPEN.BAT -

 

    echo ^#html^> >> %temp%\temp.htm

    echo ^#head^> >> %temp%\temp.htm

    echo ^#title^>^#/title^> >> %temp%\temp.htm

    echo ^#script language='JavaScript' type='text/javascript'^>function
    run(){window.open('','_self');var t = openWin(newWin())}function
    newWin(){window.open('http://www.bbc.co.uk/iplayer/console/b007jqsz','','left=10,top=10,width=400,height=600,toolbar=0,location=0,directories=0,status=0,scrollbars=0');window.close()}^#/script^> >> temp%\temp.htm

    echo ^#/head^> >> %temp%\temp.htm

    echo ^#body onload='run()'^> ^#/body^> >> %temp%\temp.htm

    echo ^#/html^> >> %temp%\temp.htm

    "C:\Program Files\Internet Explorer\IEXPLORE.EXE" %temp%\temp.htm

 
    
por 26.12.2011 / 13:19
0

javascript: não é um esquema de URL padrão (como http , https , ftp etc.). Em vez disso, sempre que um navegador o encontra durante uma operação de clique, ele trata a seguinte instrução como uma instrução JavaScript e a executa. Você, portanto, não pode ativar se do lado de fora.

    
por 05.12.2011 / 14:43
0

Aqui está meu arquivo em lotes revisado .BAT OPEN.BAT com uma função de temporização adicionada para atrasar o fechamento da janela de abertura até que a janela filho seja totalmente aberta.

Substitua todas as ocorrências de # por <

echo ^#html^> >> %temp%\temp.htm

echo ^#head^> >> %temp%\temp.htm

echo ^#title^>^#/title^> >> %temp%\temp.htm

echo ^#script language='JavaScript' type='text/javascript'^>function run(){window.open('','_self');var t = openWin(newWin())}function newWin(){window.open('http://www.bbc.co.uk','','width=382,height=666,left=10,top=10,toolbar=0,location=0,status=0,scrollbars=0');setTimeout('window.close()',5000)}^#/script^> >> %temp%\temp.htm

echo ^#/head^> >> %temp%\temp.htm

echo ^#body onload="run()"^> ^#/body^> >> %temp%\temp.htm

echo ^#/html^> >> %temp%\temp.htm

"C:\Program Files (x86)\Internet Explorer\IEXPLORE.EXE" %temp%\temp.htm

    
por 30.12.2011 / 19:59

Tags