Tenho um problema com a web depois de adicionar o ícone à tela inicial. Se a web for iniciada na Tela inicial, todos os links abrirão em uma nova janela no Safari (e perderão a funcionalidade de tela cheia). Como posso evitar isso? Não consegui encontrar ajuda, apenas a mesma pergunta sem resposta.
iphone
safari
iphone-standalone-web-app
Pavel Linkesch
fonte
fonte
scope
parâmetromanifest.json
. Veja minha resposta para mais detalhes. Eu testei no iOS 11.3 e funciona.Respostas:
Encontrei a solução JavaScript no quadro do iWebKit :
fonte
[].forEach.call(document.links, function(link) { link.addEventListener("click", function(event) { event.preventDefault(); window.location = this.href; }) });
As outras soluções aqui não são responsáveis por links externos (que você provavelmente deseja abrir externamente no Safari) ou por links relativos (sem o domínio neles).
O projeto html5 mobile-boilerplate está vinculado a essa essência, que tem uma boa discussão sobre o tópico: https://gist.github.com/1042026
Aqui está o código final que eles criaram:
fonte
Se você estiver usando o jQuery, poderá:
fonte
this.href
vez de transmitir para um objeto jQuery, mas obrigado por esta resposta. Funciona no iOS6.Isso está funcionando para mim no iOS 6.1 e com links JS do Bootstrap (ou seja, menus suspensos etc.)
fonte
$('a').on('click'
, function (e) {`por$('area').on('click'
, function (e) {` mas isso também não parece funcionar. Alguma ideia?a
comhref="#"
, então você pode ser mais específico sobre o seletor jQuery, por exemplo$('a[href!="#"]')
Esta é uma pergunta antiga e muitas das soluções aqui estão usando javascript. Desde então, o iOS 11.3 foi lançado e agora você pode usar o membro do escopo . O membro do escopo é uma URL como
"/"
onde todos os caminhos desse escopo não abrirão uma nova página.Aqui está o meu exemplo:
Você também pode ler mais sobre isso aqui . Eu também recomendo usar o gerador que fornecerá essa funcionalidade.
fonte
Com base na resposta de Davids e no comentário de Richards, você deve executar uma verificação de domínio. Caso contrário, os links para outros sites também serão abertos no seu aplicativo da web.
fonte
Se estiver usando o jQuery Mobile, você experimentará a nova janela ao usar o atributo data-ajax = 'false'. De fato, isso acontecerá sempre que o ajaxEnabled for desativado, por um link externo, por uma configuração $ .mobile.ajaxEnabled ou por um atributo target = ''.
Você pode corrigi-lo usando este:
(Obrigado a Richard Poole pelo método live () - não estava trabalhando com bind ())
Se você desativou o ajaxEnabled globalmente, precisará remover o [data-ajax = 'false'].
Demorei um pouco para descobrir, pois esperava que fosse um problema específico do jQuery Mobile, onde na verdade era o link do Ajax que realmente proibia a nova janela.
fonte
Este código funciona para o iOS 5 (funcionou para mim):
Na tag head:
No link que você deseja abrir na mesma janela:
Eu recebi esse código deste comentário: iphone web app meta tags
fonte
Talvez você deva permitir abrir links em uma nova janela quando o destino também estiver explicitamente definido como "_blank":
fonte
Eu encontrei um que é muito completo e eficiente porque ele verifica se está sendo executado apenas no WebApp autônomo, funciona sem jQuery e também é direto, apenas testado no iOS 8.2:
Mantenha-se independente: evite links em aplicativos Web independentes abrindo o Mobile Safari
fonte
Você também pode vincular quase normalmente:
E você pode remover a tag hash e o href, tudo o que faz afeta a aparência.
fonte
Isto é o que funcionou para mim no iOS 6 (adaptação muito pequena da resposta do rmarscher):
fonte
Esta é uma versão ligeiramente adaptada do Sean, que estava impedindo o botão Voltar
});
fonte
Para aqueles com Twitter Bootstrap e Rails 3
Os links de exclusão ainda estão funcionando dessa maneira.
fonte
Prefiro abrir todos os links no modo de aplicativo da web independente, exceto os que têm target = "_ blank". Usando jQuery, é claro.
fonte
Uma solução alternativa que usei para um aplicativo da web para iOS foi que eu criei todos os links (que eram botões por CSS) nos botões de envio de formulário. Então, eu abri um formulário que foi postado no link de destino e digite type = "submit" Não é o melhor caminho, mas foi o que descobri antes de encontrar esta página.
fonte
Criei um pacote instalável do bower a partir da resposta do @ rmarscher, que pode ser encontrado aqui:
http://github.com/stylr/iosweblinks
É possível instalar facilmente o trecho com o bower usando
bower install --save iosweblinks
fonte
Para aqueles que usam
JQuery Mobile
, as soluções acima quebram o diálogo pop-up. Isso manterá os links no webapp e permitirá pop-ups.Também poderia fazê-lo por:
fonte
Aqui está o que eu usaria para todos os links em uma página ...
Se você estiver usando jQuery ou Zepto ...
fonte
Você pode simplesmente remover essa metatag.
fonte