none
Comment résoudre les problèmes de compatibilité d'Ajax avec Chrome et Safari RRS feed

  • Discussion générale

  • Bonjour,

    Il existe des problèmes connus sur l'incompatibilité d'Ajax. NET 3.5 avec les navigateurs Chrome et Safari.

    Le premier concerne le contrôle UpdatePanel Ajax. Dans Chrome et Safari, lorsque vous effectuez la première action dans l'UpdatePanel, vous remarquerez que cela fonctionne très bien. Mais quand vous essayez une autre action, vous remarquerez que ça ne fonctionne pas. Ceci ce passe parce que dans Chrome et Safari, le navigateur effectue commence la première requête d'Ajax et échoue quand elle finit. Pour bien voir ce comportement, utilisez un contrôle UpdateProgress Ajax, vous remarquerez que, après la première demande de l'UpdateProgress ne disparaît pas.

    Maintenant que
    nous avons compris pourquoi l'UpdatePanel ne fonctionne pas correctement dans Chrome et Safari, nous devons trouver une solution à ce problème. Heureusement il en existe une. L'idée générale, c'est que Chrome et Safari se déclarent comme WebKit dans leurs chaînes userAgent. Vous devez ajouter un peu de JavaScript pour aider Ajax.NET à reconnaitre les navigateurs WebKit:

    Sys.Browser.WebKit = {};
    if (navigator.userAgent.indexOf('WebKit/') > -1) {
        Sys.Browser.agent = Sys.Browser.WebKit;
        Sys.Browser.version = parseFloat(navigator.userAgent.match(/WebKit\/(\d+(\.\d+)?)/)[1]);
        Sys.Browser.name = 'WebKit';
    }
    
    C'est tout ce dont on a besoin comme code. Pour appliquer ce code à votre application web, il faut créer un fichier JavaScript scripts.chrome.safari.webkit.js et le référencer dans votre application en utilisant le contrôle serveur ScriptManager:

    <asp:ScriptManager ID="ScriptManager1" runat="server">
      <Scripts>
        <asp:ScriptReference Path="scripts.chrome.safari.webkit.js" />
      </Scripts>
    </asp:ScriptManager>
    
    L'autre problème concerne le contrôle asp:Menu. Dans Chrome et Safari, ce contrôle ne s'affiche pas correctement.
    Pour résoudre ce problème de compatibilité, Il faut ajouter le code ci-dessous dans votre page ASP:

    protected void Page_PreInit(object sender, EventArgs e)
    {
      if (Request.ServerVariables["http_user_agent"].IndexOf("Safari", StringComparison.CurrentCultureIgnoreCase) != -1)
        Page.ClientTarget = "uplevel";
    }
    

    Cordialement,

     


    aelassas.free.fr
    mercredi 21 septembre 2011 09:25
    Auteur de réponse

Toutes les réponses

  • Bonjour

    vous pouvez crée un dossier App_Browsers et apres le fichier BrowserFile.browser

    Pour plus de détail consulter le lien suivant :

    http://msdn.microsoft.com/en-us/library/exc57y7e.aspx


    Tawory SOLUTIONS www.tawory.com www.adidov.com said@tawory.com

    mardi 8 janvier 2013 22:10