Jag har ett litet problmen. Det beror på hur användaren lämnar sidan. Hej. Just detProblem med __doPostback.
Jag har gjort en webeditor och när jag lämnar sidan (onunload) kör jag en javascript funktion som frågar anvädaren om han/hon vill spara sidan innan dom lämnar den. Om använder klickar ja kör jag en __doPostback som anropar en funktion i codebehind. Där datan läggs in i en databas.
Problemet är __doPostback funktionen inte hinner köras...
Det är möjligt att det går att lösa på något bättre sätt. Välkommen med förslag
Mvh, Ola
Developer ManagerSv: Problem med __doPostback.
Om man lämnar sidan genom att klicka på en länk, skriver in en ny URL i webbläsaren eller stänger fönstret så är det ganska kört.
OnUnload hinner aldrig göra ngt "vettigt" (som att posta ett forumlär så som du beskriver)
Men om användaren har Internet Explorer finns ju alltid eventet onbeforeunload.
Då får du i alla fall möjligheten att få upp en alert som varnar användaren om att denna är på väg bort från en osparad sida. När man tittar lite på vad man kan göra med onbeforeunload blir man förståss lite sur över att MS inte låter en utfforma dialogtexten bättre.
Om däremot användaren lämnar sidan genom att klicka på ngn länk eller meny etc som DU har kontroll över kan du ju alltid fånga detta om sidan behöver sparas och göra din postback inna användaren skickas vidare. Kräver lite trixande med frames för att funka helt transparent för användaren.
Ett tredje alternativ (som jag inte testat ) dök upp i huvet.
Om editorn ligger i ett frameset och det finns en annan frame som kan sköta postningen så skulle det fixa sig så som du tänkt.
Vid onunload skriver du alla relevanta data från editorn till några hidden-fält i den andra framen och postar denna frame i stället.
Hoppas detta kan vara till hjälpSv:Problem med __doPostback.
Jag har inte kontroll när en användare lämnar sidan. Man kan ju klicka bakåt (explorer) eller stänga fönstret.
Systemet är uppdelat i frames
Lite exempel.
Sidan där all html kod som ska sparas finns kör följande javascript.
function checkSave()
{
if (!saved)
{
if (confirm('<asp:Literal runat=server id=ltSaveConfirm />'))
{
parent.frames[0].__doPostBack(id, Här sätter kör jag en funktion som sätter lite hidden variable mm);
}
}
}
<!-- Frame 4 -->
<body onunload=checkSave()>
+....
</body>
Jag hinner få upp Confirm it medelande men tyvärr hinner inte postbacken köras. Sätter jag in en vanlig alert('test') ovanför parent.frams[0].__...... och väntar två s med att klicka på ok på alert rutan. Hinner all data sparas.Sv: Problem med __doPostback.
Har man ingen koll på användaren återstår nog bara "onbeforeunload" som sista utväg. Då kan man i alla fall slå larm om användaren är på väg att förlora sitt arbete genom att navigera bort från sidan.
Jag kan i alla fall inte se ngn annan utväg.