Bonjour,

Voilà je vous explique ce sur quoi je bosse (stage en entreprise) car personne dans l'entreprise n'a d'idée et personne n'a véritablement trouvé la solution non plus sur internet ! Bref une toute petite chose, quasiment d'ordre esthétique mais qui me pourri la vie en ce moment .

Je réalise les boutons "sociaux" pour un site mobile, et mes collègues de travail ont voulu que depuis le site mobile, le bouton twitter notamment puisse ouvrir directement l'application officielle (si elle est présente) sur un smartphone. Pour cela il y a effectivement une solution, les "url schemes" (ex : twitter://) que doivent bien connaitre les développeurs d'applications mobiles. Dans ce cas, pas de problème, ça s'ouvre et on peut "twitter" la page très simplement. Mais le soucis arrive lorsque l'on veut détecter si l'utilisateur a l'application d'installée et si elle ne l'est pas, rediriger sur Twitter mobile. Pour cela, une seule solution disponible encore, le timeout avec javascript (vous allez comprendre). Tout marche très bien sur les navigateurs PC mais Safari Mobile n'en fait qu'à sa tête et lorsque la redirection est mise en place, me sort une erreur extrêmement désagréable (url invalide), une erreur qui disparait automatiquement au bout de 2 secondes mais qui ne peut pas passer sur un site promotionnel tel que celui sur lequel je bosse.
Bref je veux faire disparaitre cette erreur ou du moins la faire apparaitre le moins longtemps possible (que l'on ne puisse même pas lire ce qui est écrit dessus). Autre piste, la personnalisation du message d'erreur, du style "attendez 2 secondes la redirection...".

Voici le code que j'ai mis en place, sur un nouvel onglet qui s'ouvre lorsque l'on clique sur le bouton Twitter :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<!DOCTYPE html>
<html>
<head>
    <title>Test</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script>
function launchApp(url) {
alert("twitter");
	var iframe = document.createElement('iframe');
	var url = "twitter://;"
	iframe.src = url;
	document.body.appendChild(iframe);
	var time = (new Date()).getTime();
	setTimeout(function(){
		var now = (new Date()).getTime();
		document.body.removeChild(iframe);
		if((now-time)>2000) {
			return;
		}
		window.location ='http://twitter.com/'
	}, 300);
};

</script>
</head>
<body onload="launchApp('twitter://');">

</body>
</html>
</html>
Ce code doit être testé sur iPhone avec le navigateur Safari Mobile (peut-être Android, je ne sais pas, j'en ai pas de dispo au boulot) pour avoir le fameux petit message gênant, ceci SANS l'application Twitter officielle.

Merci de vos éventuelles suggestions.