Est-il un moyen de différer via javascript si le site web fonctionne à l'intérieur de l'ipad safari ou à l'intérieur d'une application WebView?
Réponses
Trop de publicités?Il utilise une combinaison d' window.navigator.userAgent
et window.navigator.standalone
. Il peut faire la distinction entre les quatre membres en ce qui concerne un iOS application web: safari (navigateur), autonome (plein écran), uiwebview, et pas iOS.
Démo: http://jsfiddle.net/ThinkingStiff/6qrbn/
var standalone = window.navigator.standalone,
userAgent = window.navigator.userAgent.toLowerCase(),
safari = /safari/.test( userAgent ),
ios = /iphone|ipod|ipad/.test( userAgent );
if( ios ) {
if ( !standalone && safari ) {
//browser
} else if ( standalone && !safari ) {
//standalone
} else if ( !standalone && !safari ) {
//uiwebview
};
} else {
//not iOS
};
Les Agents Utilisateurs
Running in UIWebView
Mozilla/5.0 (iPad; CPU OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/98176
Running in Safari on iPad
Mozilla/5.0 (iPad; CPU OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B176 Safari/7534.48.3
Running in Safari on Mac OS X
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/534.55.3 (KHTML, like Gecko) Version/5.1.5 Safari/534.55.3
Running in Chrome on Mac OS X
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.151 Safari/535.19
Running in FireFox on Mac OS X
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:11.0) Gecko/20100101 Firefox/11.0
Code De Détection D'
var is_uiwebview = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(navigator.userAgent);
var is_safari_or_uiwebview = /(iPhone|iPod|iPad).*AppleWebKit/i.test(navigator.userAgent);
Je pense que vous pouvez simplement utiliser l' User-Agent
.
Mise à JOUR
Page navigué à l'aide de Safari iPhone
Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_1 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8B117 Safari/6531.22.7
Je vais essayer dans un deuxième avec UIWebView
Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_1 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Mobile/8B117
La différence est que le Safari on dit Safari/6531.22.7
Solution
var isSafari = navigator.userAgent.match(/Safari/i) != null;
Je sais que ce code va vérifier si il est accessible à partir d'un ajout d'une icône à l'écran d'accueil:
if (window.navigator.standalone == true) {
//not in safari
}
mais je ne suis pas sûr de savoir comment il réagirait face à une UIWebView. La seule autre solution que je pouvais penser est d'obtenir l'agent de l'utilisateur ou à l'aide de - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
et le remplacement de la chaîne de requête de la page, vous accédez avec quelque chose de la page utilise pour vérifier qu'elle est accessible à partir d'un affichage web.