2009-03-16 2 views
1

J'ai utilisé le code suivant dans le fichier cs de la page maître pour corriger le problème de rendu du safari et du contrôle de menu asp: menu. J'étais curieux de savoir pourquoi il résout le problème. Voici le code:J'ai corrigé le problème de menu safari/asp: en utilisant la méthode addedcontrol. Pourquoi cela fonctionne-t-il?

protected override void AddedControl(Control control, int index) 
{ 
    if (Request.ServerVariables["http_user_agent"].IndexOf("Safari", 
     StringComparison.CurrentCultureIgnoreCase) != -1) 

    this.Page.ClientTarget = "uplevel"; 

    base.AddedControl(control, index); 

}

Répondre

2

Le problème est que ASP.NET reconnaît par erreur Safari comme navigateur "downlevel" (par exemple ancienne). Votre correctif le force à le reconnaître comme un navigateur plus moderne capable de gérer certains des javascript du menu.

Cela fonctionnera également via un tas d'autres techniques telles que le remplacement de Page_PreInit ou l'ajout d'un safari.browser correctement configuré à App_Browsers.

+0

Une raison pour laquelle asp.net reconnaîtrait safari comme un navigateur "down-level"? Que pensait Microsoft? – Xaisoft

+0

J'ai lu sur le web que dans certaines circonstances, asp: menu bloque les anciennes versions de Safari. Alors peut-être que c'est pourquoi. – Keltex

Questions connexes