Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal, tudo bem?
Preciso fazer via código JavaScript com que uma mensagem de alerta do Internet Explorer seja fechada. Me refiro aquelas famosas MsgBox com o botão OK para que o usuário faça o clique.
Só que desejo que o código faça isso, sem intervenção de usuário.
Meu código navega para uma determinada página, e não consegue prosseguir pois fica pendente esse OK no alert que o IE exibe.
Aguardo respostas. Obrigado!
Abraços.
Boa tarde !
Já ouvi algo sobre alguma forma alternativa. Um troubleshooting.
Sempre alguma solução existe...
Abraços.
Olá! Uma vez estive essa mesma dúvida, e a perguntei para um amigo meu que sabe de Javascript, e ele respondeu que não (Com Alert). Só se você criar uma caixa como se fosse o alert().
Espero ter Ajudado ;)
Pra fechar alertas na página faça:
<html>
<head>
<script>
window.backupAlert = window.alert;
window.alert = function () {return true};
</script>
</head>
<body>
<div>
<div>
<script>alert("ok");</script>
<p>Teste...</p>
</div>
</div>
</body>
</html>Caro CL4nG,
Muito obrigado. Realmente funciona numa página web, porém como adaptar isso para o meu caso?
Estou usando um arquivo de script do Windows (.wsf) com instruções javascript, que acessa uma página que possui um Alert().
Abraços.
>
Caro CL4nG,
Muito obrigado. Realmente funciona numa página web, porém como adaptar isso para o meu caso?
Estou usando um arquivo de script do Windows (.wsf) com instruções javascript, que acessa uma página que possui um Alert().
Abraços.
Então, mas como está sendo feito esse acesso a página? Não da pra você injetar esse javascript na página não?
Eu tenho meu arquivo .WSF mais ou menos assim, conforme abaixo.
Tentei colocar a instrução informada (em azul) antes de chamar a abertura da página no IE porém não obtive resultado. Assim que a página é aberta o Alert() da página aparece pedindo o OK.
Talvez esteja faltando algum parâmetro.
<job id="IncludeExample">
<script language="JScript">
var objIE = new ActiveXObject("InternetExplorer.Application");
try
{
window.backupAlert = window.alert;
window.alert = function () {return true};
objIE.Navigate("http://www.PAGINA_TAL.com.br");Tente navegar para o site mas só pra obter o documento, dai no objeto objIE adicione primeiro ao body o javascript que te passei, depois adicione o innerHTML do site que você tá querendo fechar o alert.
Algo mais ou menos assim:
var ie = new ActiveXObject("InternetExplorer.Application");
ie.Navigate("about:blank");
var html = '<script>window.alert = function(){return true};</script>';
ie.Document.body.innerHTML = html + htmldosite;
ie.FullScreen = true;
ie.StatusBar = false;
ie.Visible = true;Olá! Quando você diz "htmldosite" se refere a parte do site em que o Alert() é gerado, certo?
Enfim, não consegui fazer funcionar desta forma.
Tentei também (sem sucesso) algo do tipo:
objIE.Document.window.backupAlert = window.alert;
objIE.Document.window.alert = function(){return true}
objIE.Navigate("http:www.teste.com.br");Você não entendeu o que eu disse...
Passos:
Eu te passei o script base, agora você só precisa ter o html do site na variável htmldosite.
Boa tarde.
Eu entendi sim, mas olha só o que está ocorrendo:
Quando eu declaro a VAR abaixo dá erro de "Windows Script Host: Esperando um nome válido".
var html = '<script>window.alert = function(){return true};</script>';
Sou novato e posso estar comendo bola em algum parâmetro.
Já tentei trocar aspas simples para aspas duplas, mas não resolve... também não sei dizer se é por conta de estar utilizando Try Catch.
Troque o nome da variável, eu não sei, mas o nome 'html' pode ser reservado.
O que está ocorrendo é que o meu arquivo de script do Windows (.wsf) não está reconhecendo a string abaixo, e já tentei mudar o nome da var html para var abacaxi mas não resolve.
var html = '<script>window.alert = function(){return true};</script>';
Percebi que é por conta do conteúdo da variável... se eu remover o conteúdo, passa tranquilo. Não sei como armazenar esta String de java na variável.
Seria possível que meu código JS simulasse o pressionamento da tecla [ESC]? KeyCode=27.
Se sim, isto resolveria o problema.
Acho que não! Senão seria possível fazer upload de arquivos sem que o usuário soubesse...
Mas vendo códigos na net (Eu não mexo com coisas da M$...) vi que da pra fazer da forma que te mostrei anteriormente.
Mais um código semelhante que vi:
<script language=jscript>
IE = new ActiveXObject("InternetExplorer.Application");
IE.Visible = true;
Factory = new ActiveXObject("ScriptX.Factory");
Sink = Factory.NewEventSink(IE);
Sink("DocumentComplete") = DocumentComplete;
Sink("OnQuit") = onQuit;
IE.Navigate2("http://site.com");
Sink.Wait();
Factory.Shutdown();
function onQuit()
{
this.Unadvise();
}
function DocumentComplete(win, b)
{
fechar = '<script>window.alert = function(){return true};</script>';
win.document.body.innerHTML = fechar + win.document.body.innerHTML;
}
</script>
Não é possível fechar um alert() via código.