CRS Webbproduktion
Webbproduktion när den är som bäst

Redirect till ett ankare

september 7, 2009 13:37 by Admin

Härom dagen ställdes jag inför problemet att jag behövde Redirecta en sida tillbaka till sig själv, fast med ett ankare. Det fungerade naturligtvis utan problem, utom i Internet Explorer. Efter en del trixande hittade jag en lösning, baserad på javascript.

Jag fixade min redirect så här:

if (Request.Browser.Browser.ToLower() == "ie")
{
    Response.Redirect("sida.aspx?hash=mitt_ankare#mitt_ankare");
}
else
{
    Response.Redirect("sida.aspx#mitt_ankare");
}

På så vis lägger jag alltså till en QueryString om besökaren använder Internet Explorer. Jag skickar ändå med ankaret, ifall att Microsoft skulle få för sig att fixa buggen i framtiden.
Sedan på klientsidan lägger jag följande javascript:

<!--[if IE]>
<script type="text/javascript">
    function getQuerystring(key, default_) {
        if (default_ == null) default_ = "";
        key = key.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
        var regex = new RegExp("[\\?&]" + key + "=([^&#]*)");
        var qs = regex.exec(window.location.href);
        if (qs == null)
            return default_;
        else
            return qs[1];
    }
    self.location.hash = "#" + getQuerystring("hash");
</script>
<![endif]-->

Det körs alltså endast om besökaren använder Internet Explorer, och hämtar ut QueryStringen "hash" och skickar besökaren till rätt position på sidan.

Ganska enkelt men det krävdes en del letande för att hitta på lösningen. Nu har jag presenterat den här för dig, varsågod.


Lägg till kommentar




  Country flag

biuquote
  • Kommentar
  • Live överblick
Loading