Olá Fernando!
A função getDay()
retorna o dia da semana como número de 0
(domingo) a 6
(sábado).
Como você está comparando com 7
, ele nunca atenderá essa condição e por isso nunca executará o bloco.
E, apenas mais uma questão de boas práticas é que o seu código está fora de <head>
e <body>
, então ele apenas carregará isso depois de toda a página, como você quer que ele execute no onload
, o ideal é que ele fique ou dentro do head
e seja carregado antes da página.
Ajustei os conteúdos para dentro de head
e body
, além que faltava fechar um parênteses em horaProgramada.setHours(19
e no Javascript a compara é feita com dois sinais de igual dia == 7
, apenas um é usado para definir valores.
A função setTimeout precisa executar uma função, se você simplesmente passar uma função direto para ela, ela irá executar, então ficaria algo mais ou menos assim:
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>aula automatica</title>
<script type="text/javascript">
var semana = new Date()
var dia = semana.getDay()
if (dia == 0) { //0 = domingo
window.onload = function chefe() {
var milisegundos = hora();
setTimeout(function() { funcionario() }, milisegundos);
console.log('Progamado para executar em ' + Math.ceil(milisegundos / 1000) + ' segundos.');
}
function hora() {
horaProgramada = new Date();
horaAtual = new Date();
horaProgramada.setHours(19);
horaProgramada.setMinutes(12);
horaProgramada.setSeconds(0);
return horaProgramada - horaAtual;
}
function funcionario () {
alert('teste');
return true;
}
}
</script>
</head>
<body>
<h1>bot que abre aula automatico</h1>
</body>
</html>
Adicionei um console.log
para registrar em quantos segundos a mensagem será exibida e assim você tem a certeza que o método está agendado para executar.
Qualquer dúvida é só falar!
Abraços!