Pergunta

É possível iniciar uma nova janela em JavaScript usando a função window.Open e definir o foco para essa guia?

Aqui está o que estou fazendo hoje:

            var winRef = window.open(outUrl,wName,'left='+ wX +',top=' + wY + ',height=' + wH + ',width=' + wW + args);
            try {
                // Not all window types support the focus() property.
                winRef.focus();
            }
            catch (exception) {
            }

A janela é aberta, mas a nova guia não recebe foco.

Foi útil?

Solução

Jay,

Você está vendo um comportamento projetado.Para limitar as oportunidades de comportamento malicioso, os scripts executados em janelas com guias não podem afetar outras guias.

Para obter mais informações, consulte Navegação com guias para desenvolvedores em http://msdn.microsoft.com/en-us/library/ms537636.aspx :

"A capacidade de abrir vários documentos na mesma janela do navegador tem certas implicações práticas e de segurança [...] As guias ativas (guias com foco) não podem ser afetadas por scripts executados em guias inativas ou em segundo plano."

BR.

Outras dicas

Como usuário, nunca quero que aplicativos (ou guias) tenham foco, a menos que eu solicite especificamente.Fiz um grande esforço para evitar que as guias do meu navegador (Firefox) ganhassem foco por esse motivo.

Estou razoavelmente certo de que você não pode mudar o foco para outra guia.

Meu entendimento é que isso é feito para impedir que pop-ups e outros conteúdos maliciosos roubem o foco dos usuários.

Se a outra "guia" fizer parte do seu aplicativo (e não do conteúdo de outro site), talvez você deva incluí-la em uma div pop-up na parte superior do seu conteúdo principal, em vez de em uma janela separada;dessa forma, você sempre pode controlar o foco, desativar o conteúdo abaixo dele (para caixas de diálogo modais), ocultá-lo, etc.

Como usuário, não deveria ser capaz de controlar como isso funciona?

E se houver um aplicativo que seja aprimorado por esse recurso que eu queira executar - não deveria ser possível conceder esse privilégio a um domínio?

Apenas um pensamento.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top