No Chrome, isso abre em uma nova guia:
<button onclick="window.open('newpage.html', '_blank')" />
isso abre em uma nova janela (mas eu gostaria que abrisse em uma nova guia também:
<script language="javascript">
window.open('newpage.html', '_blank');
</script>
Isso é viável?
javascript
window.open
Andrew
fonte
fonte
Respostas:
Você não pode controlar isso diretamente, porque é uma opção controlada pelos usuários do Internet Explorer.
A abertura de páginas usando Window.open com um nome de janela diferente abrirá em uma nova janela do navegador como um pop-up OU abrirá em uma nova guia, se o usuário configurou o navegador para fazer isso.
EDITAR:
Uma explicação mais detalhada:
1. Em navegadores modernos, window.open abrirá em uma nova guia em vez de em um pop-up.
2. Você pode forçar um navegador a usar uma nova janela ('pop-up') especificando opções no 3º parâmetro
3. Se a chamada window.open não fizer parte de um evento iniciado pelo usuário, ela será aberta em uma nova janela.
4. Um "evento iniciado pelo usuário" não tem a mesma chamada de função - mas deve se originar na função invocada por um clique do usuário
5. Se um evento iniciado pelo usuário delega ou adia uma chamada de função (em um ouvinte de evento ou delegado não vinculado ao evento de clique, ou usando setTimeout, por exemplo), ele perde seu status como "iniciado pelo usuário"
6. Alguns bloqueadores de pop-up permitirão janelas abertas a partir de eventos iniciados pelo usuário, mas não aquelas abertas de outra forma.
7. Se qualquer pop-up for bloqueado, aqueles normalmente permitidos por um bloqueador (por meio de eventos iniciados pelo usuário) também serão bloqueados. Alguns exemplos…
Forçar a abertura de uma janela em uma nova instância do navegador, em vez de uma nova guia:
O seguinte seria qualificado como um evento iniciado pelo usuário, embora chame outra função:
O seguinte não se qualificaria como um evento iniciado pelo usuário, uma vez que setTimeout o adia:
fonte
Às vezes é útil forçar o uso de uma guia, se o usuário gostar. Como Prakash afirmou acima, isso às vezes é ditado pelo uso de um evento não iniciado pelo usuário, mas existem maneiras de contornar isso.
Por exemplo:
sempre abrirá "newurl" em uma nova janela do navegador, pois a função "sempre" não é considerada iniciada pelo usuário. No entanto, se fizermos isso:
abrimos a nova janela do navegador ou criamos a nova guia, conforme determinado pela preferência do usuário no clique do botão que é iniciado pelo usuário. Em seguida, apenas definimos o local para a URL desejada após retornar da postagem AJAX. Voila, forçamos o uso de uma guia se o usuário gostar.
fonte
se você usar
window.open(url, '_blank')
, ele será bloqueado (bloqueador de pop-ups) no Chrome, Firefox etc.tente isso,
trabalhando violino js para este http://jsfiddle.net/safeeronline/70kdacL4/2/
trabalhando js fiddle para a janela ajax abrir http://jsfiddle.net/safeeronline/70kdacL4/1/
fonte
No momento (Chrome 39), uso este código para abrir uma nova guia:
Claro que isso pode mudar em versões futuras do Chrome.
É uma má ideia usar isso se você não pode controlar o navegador que seus usuários estão usando. Pode não funcionar em versões futuras ou com configurações diferentes.
fonte
VM646 js:12 Blocked opening 'http://www.stackoverflow.com/' in a new window because the request was made in a sandboxed frame whose 'allow-popups' permission is not set.
Isso abrirá o link em uma nova guia no Chrome e Firefox, e possivelmente em mais navegadores que não testei:
Basicamente, ele abre uma nova guia vazia e, em seguida, define o local dessa guia vazia. Esteja ciente de que é uma espécie de hack, já que o comportamento da aba / janela do navegador é realmente de domínio, responsabilidade e escolha do Navegador e do Usuário.
A segunda linha pode ser chamada em um retorno de chamada (após você ter feito alguma solicitação AJAX, por exemplo), mas o navegador não a reconheceria como um evento de clique iniciado pelo usuário e pode bloquear o pop-up.
fonte
$window
é apenas a maneira de usar do AngularJSwindow
. Você pode simplesmente usarwindow
. Mais informações: docs.angularjs.org/api/ng/service/$windowMinissolução clara
$('<form action="http://samedomainurl.com/" target="_blank"></form>').submit()
fonte
Você pode usar este código para abrir em uma nova guia.
Peguei no stackoverflow ..
fonte
Melhor maneira que eu uso:
1- adicionar link ao seu html:
2- adicionar função JS:
3- basta chamar a função OpenNewTab com o link que você deseja
fonte