Posso fechar uma aba do firefox através do console?

6

Eu estava baixando um monte de coisas da Internet com bastante alegria usando o gerenciador de downloads do Firefox quando decidi verificar a academia de códigos (um site que ensina como programar em javascript, de uma forma legal - aparentemente).

Então, depois de alguns exercícios, cheguei à lição 7 (item 4), que exige que você preencha as condições de um for para trazer i (a variável loop) para 0. O que aconteceu é que em vez de escrever o loop como for (i = 2; i >= 0; i--) que dispararia o mecanismo interno que me levaria para a próxima lição, "erroneamente" escreveu como for (i = 2; i >= 0; i++) , fazendo com que o loop continue causando sempre Firefox para usar 100% da CPU, frisando tudo e frustrando todas as minhas tentativas de recarregar a página ou fechar a aba.

Neste momento pausei o processo através de kill -STOP <pid> , mas não quero fechar o Firefox porque estou a transferir um monte de coisas que não podem ser retomadas, e gostaria de saber se há uma maneira de fechar essa guia pela linha de comando . Talvez haja uma maneira de listar todos os tópicos do firefox e tentar fechá-los individualmente (no pior dos casos, acho que o GDB pode me ajudar nisso).

Atualmente estou usando o Mac OS X 10.7.2.

    
por karlphillip 08.01.2012 / 20:34

3 respostas

2

Eu fiz o mesmo na Codecademy. Preenchendo algo errado e isso resultou em um loop infinito, parece que o Codecademy não está escrito para evitar esse mau comportamento, então ele é elevado ao navegador. No meu caso, o navegador só pega isso e pergunta depois de um tempo para parar o script. Acho estranho que isso não pareça estar acontecendo no seu caso, por isso sugiro que você atualize o Firefox depois de resolver isso para que esse tipo de condição não possa ocorrer novamente.

Eu temo que não há como encontrar uma ferramenta genious de gerenciamento de processos ou anexar um depurador como gdb , isso pode se tornar muito complicado se você não tiver nenhuma informação de depuração. Basta procurar o thread que está em algum lugar nas rotinas de execução do Javascript. Se você não tiver informações de depuração e nenhuma biblioteca dinâmica, acho que estará em algum lugar em xul.so , que pode ser sobre qualquer guia.

Se você, de alguma forma, descobrir qual é o encadeamento de download, você pode tentar congelar os outros encadeamentos um por um para descobrir qual deles é a guia real. No pior dos casos, o congelamento de encadeamentos não ajuda, já que o encadeamento pode estar segurando uma trava que os outros encadeamentos estão esperando. Nesse caso, é melhor você simplesmente matar o processo e começar de novo com os downloads. Talvez considere downloads enormes de uma maneira diferente do que com o seu navegador, se possível ...

    
por 08.01.2012 / 21:17
0

Basta clicar no ícone de fechamento e esperar, assim que ele tiver tempo de CPU, ele será desativado. Ou pressione ctrl-w (uma vez) enquanto a janela estiver ativa e aguarde.

    
por 08.01.2012 / 20:40
0

Você está no Windows? Se você é, você poderia (concebivelmente) usar o ProcessExplorer para zerar o (s) thread (s) mal-comportado (s) e matá-lo (s) - apenas procure pelo consumo constante de CPU / memória e nomes de função JavaScript. Mas tenha muito cuidado - isso deve ser uma cirurgia de precisão.

Em outros sistemas operacionais, você pode usar um depurador para conseguir o mesmo - mas é um problema.

    
por 08.01.2012 / 21:07