webForumDet fria alternativet

Ajax state vid webbläsare back

.NET

2 svar · 341 visningar · startad av lucgo446

Medlem sedan aug. 2002221 inlägg
Frågan#1

Hur gör jag för behålla staten när användaren klickar på back i webläsaren när jag använder Ajax onload.

exempel, kunden går in på söksidan. söker... sökresultat hämtas via ajax. klickar på ett sökresultat och kommer till artikelutmatningen. klickar han back så vill jag att söket ska visas, det gör det ju inte av förklarliga själ... Nån ide?

Medlem sedan sep. 20011 914 inlägg
#2

UpdateHistory

Medlem sedan aug. 2002221 inlägg
#3

SuperCoolDino

Ja du, har kollat hur snubben gör och förenklat det så att man ska se konceptet enklare. (jag använder inte updatepanel utan anropar webservice:ar) Han använder en gömd iframe och att kunna bläddra och sen använder hashen på querystringen... see for yourself...

bifogar lite html... PS, gör en history.aspx där ni sätter Titel till Querystring så blir det fint...

För att det ska funka i FF så behöver man inte använda iframen. där använder han setTimeout för att kolla om Hashen är ändrad varge 100del... bara att jobba vidare

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>AjaxHistoryState</title>
</head>
<body>
<script language="javascript" type="text/javascript">
currentState = "";
function sok(val, triggatFranHistory){
    document.getElementById("result").innerHTML = "sökning på: <a href=\"ensida.aspx\">"+val+"</a>";
    if (!triggatFranHistory && (window.navigator.userAgent.indexOf('MSIE') > -1))
       document.getElementById("__historyFrame").src = "history.aspx?"+val;
    window.location.hash = '#'+val;
      currentState = val;
}
function kollaOnLoad(){
state = window.location.hash.replace("#","");
if (state!==""){
    if (currentState!=state)
       sok(state, true);
 
}
currentState = state;
if (window.navigator.userAgent.indexOf('MSIE') < 0) {
    setTimeout("kollaOnLoad()",100);
}
}

function historyTriggat(frame){
var entry = frame.contentWindow.location.search;
        if ((entry.length >= 1) && (entry.charAt(0) === '?')) {
           sok(entry.substr(1), true);
        }
}</script>
    <form id="form1" runat="server">
    <div>
    Sök här va:<input type="text" id="soket" value="" /> 
    <input type="button" value="sök" onclick="sok(document.getElementById('soket').value,false)" />
    <span id="result"></span>
    <script>kollaOnLoad()</script>
    <iframe id="__historyFrame" src="about:blank" onload="historyTriggat(this)" style="display:none;"></iframe>
    </div>
    </form>
</body>
</html>
318 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
180 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
180 ms — ändringar (db)