Response.Redirect avec # ancre, ne fonctionne pas dans IE7
-
03-07-2019 - |
Question
Response.Redirect(string.Format("myprofile.aspx?uid={0}&result=saved#main",user.UserID));
ledit code se traduit par
IE7 - monprofil.aspx? uid = 933fdf8e-1be0-4bc2-a269-ac0b01ba4755 & résultat = sauvegardé
FF - myprofile.aspx? uid = 933fdf8e-1be0-4bc2-a269-ac0b01ba4755 & result = saved # main
pourquoi IE7 jette-t-il mon ancre?
edit: je devrais mentionner que je l'utilise conjointement avec le contrôle de tabulation de jQuery UI. Je souhaite que la publication se place dans un onglet spécifique.
La solution
Ce serait un sacré coup, mais si IE ne se comportait pas, vous pourriez le faire.
passer également un paramètre, par exemple
uid=933fdf8e-1be0-4bc2-a269-ac0b01ba4755&result=saved&hash=main#main
Ensuite, sur votre page (avant la balise body close ou en tant qu'événement onload), uniquement pour IE, extrayez le paramètre s'il est présent et définissez le hachage manuellement.
<!--[if IE]>
<script>
if(document.location.href.indexOf('&hash=') != -1){
//extract value from url...
document.location.hash = extractedValue;
}
</script>
<![endif]-->
Autres conseils
Peut-être que c'est un problème de régression de IE6?
Avez-vous essayé de contourner le problème en l'ajoutant au début avec un & amp;?
J'ai utilisé RegisterClientScriptBlock
pour générer window.location
.
Quelque chose comme ça:
string url = String.Format("{0}RegForm.aspx?regId={1}#A", this.CurrentFolderUrl, this.RegId);
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "redirectToClientPage", String.Format("window.location='{0}'", url), true);