Existe uma maneira de diferenciar via javascript se o site for executado dentro do ipad safari ou dentro de um aplicativo WebView?
javascript
ipad
ios
webview
sod
fonte
fonte
Respostas:
Isso usa uma combinação de
window.navigator.userAgent
ewindow.navigator.standalone
. Ele pode distinguir entre todos os quatro estados relacionados a um aplicativo da web iOS: safari (navegador), autônomo (tela inteira), uiwebview e não iOS.Demo: http://jsfiddle.net/ThinkingStiff/6qrbn/
fonte
Safari
no userAgent. ele se comporta de maneira diferente em relação àwebcal://
Agentes de usuário
Executando em UIWebView
Executando no Safari no iPad
Executando no Safari no Mac OS X
Executando no Chrome no Mac OS X
Executando no FireFox no Mac OS X
Código de Detecção
fonte
UIWebView
e Safari têmSafari
em seu agente de usuárioVersion
em oposição aSafari
funcionou para mim no iOS mais recente.Version
? Você substituiSafari
comVersion
navar is_uiwebview
linha?Eu acho que você pode simplesmente usar o
User-Agent
.ATUALIZAR
Página navegada usando iPhone Safari
Vou tentar em um segundo com UIWebView
A diferença é que o Safari diz
Safari/6531.22.7
Solução
fonte
Safari/.....
próprio está faltando no UIWebViewSim:
fonte
Eu tentei todas essas soluções, mas não funcionou no meu caso,
eu ia detectar o Telegram dentro do Webview. Percebi que o Safari está mudando o texto do estilo do telefone para um link com o prefixo "tel:", então usei isso para escrever este código, você pode testá-lo: jsfiddle
fonte
navigator.platform === 'MacIntel'
. Isso afeta especialmente o iPadOS 13 Mobile Safari porque ele usa o modo Desktop por padrão.A solução do Neoneye não funciona mais (ver comentários) e pode ser simplificada. Por outro lado, testar apenas o "Safari" no UA aborda muito mais do que os dispositivos portáteis ios.
Este é o teste que estou usando:
fonte
Para a primavera de 2018, nenhum dos métodos propostos funcionou para mim, então eu vim com uma nova abordagem (que não é baseada em userAgent):
https://gist.github.com/BorisChumichev/7c0ea033daf33da73306a396ffa174d1
Você é bem-vindo para estender o código para dispositivos iPad também, acho que deve servir.
Funcionou bem para webviews de Telegram, Facebook e VK.
fonte
Working 15.02.19
Outra solução para detectar webviews no iOS é verificar o suporte / existência de
navigator.mediaDevices
.No meu caso, não precisei capturar todas as visualizações da web, mas aquelas que não suportam entrada de câmera / microfone (lembrete: os alertas não são acionados no Webview, portanto, certifique-se de alterar algo no dom para fins de depuração)
fonte
Sei que este código verificará se ele está sendo acessado por um ícone adicionado à tela inicial:
mas não tenho certeza de como isso reagiria em um UIWebView. A única outra solução que eu poderia pensar é obter o agente do usuário ou usar
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
e substituir a string de consulta da página que você está acessando por algo que a página usa para identificar que está sendo acessada de uma visualização da web.fonte
Sugiro usar o Modernizr e verificar indexeddb como este . Você pode verificar isso com a configuração do agente do usuário (dispositivo, sistema operacional, navegador, etc), mas a detecção de recursos pura parece mais recomendada.
fonte
Da última vez que precisei disso (SÓ para fins de WebView), usei esta verificação:
fonte
Eu encontrei uma solução simples para detectar iPhone ou iPad. Isso funciona bem para mim.
fonte
Experimente com IOS 13
fonte
Não acho que haja algo específico que você possa usar em Javascript do lado do cliente, mas se você tiver controle sobre o que o UIWebView de origem pode fazer, você pode querer brincar com a string do agente do usuário que ele gera e testar isso em seu Javascript do lado do cliente? Um pouco hack, eu sei, mas ei ... Esta pergunta pode dar algumas dicas sobre como ajustar o agente do usuário:
Alterar o agente do usuário em UIWebView (iPhone SDK)
fonte
@ Sod, bem, eu não tenho resposta, mas não estou convencido por que você deseja verificar, uma vez que, o mecanismo do navegador se seu safari (navegador) ou aplicativo será o mesmo seu Webkit apenas, Sim O aplicativo pode configurar os recursos do mecanismo do navegador, como , se o aplicativo deseja executar JS ou Display Image etc ...
Acredito que você deve verificar certas propriedades se o Flash é compatível com o navegador ou se o navegador exibe imagem ou não, ou provavelmente você gostaria de verificar o tamanho da tela,
fonte