Les navigateurs les plus modernes (Chrome 10, Firefox 4, IE9) raccourcissent tous leurs identifiants userAgent. En conséquence, les versions .NET pris en charge ne sont plus envoyées au serveur. P>
Afin de permettre à nos clients d'utiliser notre application ClickOnce, nous devons savoir quels cadres sont pris en charge par le client. p>
La détection JavaScript des aides ClickOnce Chrome et Firefox sont un début (ils échouent maintenant dans Firefox 4), mais nous n'avons plus de moyen de détecter si le client a .NET 2.0, 3.5 ou 4.0 installé. P >
En empêchant la détection de la plate-forme Windows de la chaîne userAgent et infère em> le cadre le plus probable (XP = 1.1, Vista = 2.0, Win7 = 3.5), comment détecter la prise en charge de la framework? < / p>
(Nous voulons empêcher le téléchargement du fichier .Application, car la plupart de nos clients ne semblent pas remarquer le téléchargement «Pop-Swers») P>
4 Réponses :
Je ne vois pas un moyen de faire ça. Si le navigateur ne dit pas à votre serveur que les cadres sont installés, vous n'avez pas d'autre moyen de le savoir. P>
N'est-il pas possible de créer un widget Silverlight qui détecte les frameworks installés et expose les résultats via JavaScript?
Cela suppose qu'ils ont installé Silverlight. Il y a beaucoup de façons que vous pourriez le détecter, mais aucun d'entre eux n'est infaillible, et tous ont divers scénarios de défaillance.
navigator.useragent vous donne la chaîne UA étendue au moins sur IE9 P>
Ceci est dirigé dans la bonne direction: IE9, Chrome12 et FF3.6 émettent la chaîne .NET correctement via cette méthode. Malheureusement, FF4 ne le fait pas. Merci pour votre suggestion.
Dans notre observation, Navigator.useragent et UserAgent en-tête envoyés au serveur sont exactement les mêmes dans tous les modes de compatibilité de IE9. En mode IE9, la version .NET est manquante.
Je peux confirmer que dans IE9, console.log (navigator.useragent); code> renvoie toutes les versions-cadres. Testé sur jsfiddle.net.
Ce problème était corrigé par Microsoft . La version .NET est maintenant renvoyée sous forme d'en-tête de requête HTTP, "x-clickoncesupport".
en php, vous obtiendrez cette via getenv () p> dans perl p> en javascript, il est Non possible, selon Cette réponse a >. p> (Tout a commencé par examiner le code de l'assistant de Firefox .NET, qui m'a conduit à rechercher l'en-tête "x-clickoncesupport". Rien de tel que de pouvoir afficher le code source pour résoudre un Mystery!) P> P>
Ceci est vrai pour le plugin Firefox ".NET Framework Assistant" mais pas pour IE 9 & IE 10
La façon dont j'ai eu le problème de ce problème consista à renvoyer un en-tête de réponse à raconter au navigateur de fonctionner dans la compatibilité, puis à détecter la version-cadre avec JavaScript sur le navigateur.useragent.
Code de page-derrière: P> xxx pré>
JavaScript sur la page P>
// js to detect .net 3.5 // if it evaluates to true, then the user has .NET 3.5 installed alert(navigator.userAgent.search(/\.NET.*?3\.5[\.\da-z]*?;/i) > -1);
Merci de votre contribution, mais notre problème principal est que les nouveaux navigateurs non-IE ne renvoient plus les versions .NET dans la chaîne userAgent plus.