RSS

Tag Archives: JavaScript

Lunch Time – An MVP Community Initiative

Lunch Time is a new talk series scheduled on every alternate Wednesday during the Lunch Time, initiated and will be presented by the Microsoft Most Valuable Professionals.

Current schedule:

Date/Time Topic
Mar 06, 2013, 12:00 PM IST Good things about .NET 4.5
Mar 20, 2013, 12:00 PM IST ASP.NET 4.5 New Features
Apr 03, 2013, 12:00 PM IST Building Site Resiliency for Exchange 2013
Apr 17, 2013, 12:00 PM IST Responsive Apps with MVC4, WebAPI and HTML5
May 01, 2013, 12:00 PM IST A Quick Look at HTML5
May 15, 2013, 12:00 PM IST Implementing SQL Server AlwaysOn

Across the globe, anyone can join in and learn from technical community leaders.

I will be presenting one of the session in this series – A Quick Look at HTML5 (Event ID: 1032545489)

Sandeep Mewara LunchTime Microsoft Event 01May13

Please register! Do share your feedback post presentation.

Advertisements
 
 

Tags: , , , , , , ,

HTML5 Quick Start Web Application

HTML5 Quick Start

I was learning HTML5 features since December. While going through it, I was playing around making a sample web application fully HTML5 enabled – kind of self learning kit that would give a basic knowledge to anyone who goes through it. Plan was to publish it as an article so that others can learn quickly and have basic features at one place. One can play around with the feature implementation straight away post download.

It took me some time to write the article as it covered good number of features. I finished working on it and have published it today on CodeProject: HTML5 Quick Start Web Application

One can have a look at it there and provide feedback.

 
Leave a comment

Posted by on February 16, 2013 in ASP.NET, CSS3, HTML5, JavaScript, Mobile, Web Application

 

Tags: , , , , , , ,

Browser Back button issue after logout

Problem description:
I have found a lot of people asking for a resolution to handle the browser’s back button once user has logged out. Typically, users reports something like:

I am facing issue in my application’s logout scenario. After the user login into website, he/she uses it(website) and when done, they do a logout, which leads them back to login page. But the problem is now, from this login page, if I click the browser back button then it again takes the user back to the previous visited page as if logged in. How can I stop user from viewing the previous page once logged out?

Assessment:
The browser Back button is an option to go back to previously visited pages. The back button can be considered as a pointer that is linked to the page previously visited by the user. Browser keeps a stack of the web pages visited as a doubly-linked list.

The back button works by stepping through the history of HTTP requests which is maintained by the browser itself. This history is stored in browsers cache that consists of the entire page content with resources like image and scripts. This enables browser to navigate backwards and forwards through the browser history and have each page displayed instantly from cache without the delay of having it retransmitted over the internet from the server.

Just to handle the scenario of getting page content from server, browsers have a Refresh button transmits the request to web server and get back the fresh copy of entire page. Internally, this also replaces the copy of the page in the browser’s cache.

Thus, basic reason behind the problem in discussion is Browser’s Cache!

Possible Resolutions:
On Logout, one does clear the session to make sure user related data no more exists. Now, browsers cache needs to be handled such that browser has no history (this will make back/forward button in browser grayed out disabled.) Here are various ways of how one can do it:

Option #1:  Set Response Cache settings in code-behind file for a page

// Code disables caching by browser.
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(DateTime.UtcNow.AddHours(-1));
Response.Cache.SetNoStore();

Option #2: Set META tag for HTTP cache settings in your ASPX page header

<META Http-Equiv="Cache-Control" Content="no-cache"/>
<META Http-Equiv="Pragma" Content="no-cache"/>
<META Http-Equiv="Expires" Content="0"/>

Option #3: Clear browser’s history through JavaScript using script tag

//clears browser history and redirects url
<SCRIPT LANGUAGE="javascript">
function ClearHistory()
{
     var backlen = history.length;
     history.go(-backlen);
     window.location.href = loggedOutPageUrl
}
</SCRIPT>

Option #4: Clear browser’s history through JavaScript injecting through code-behind file via Response

protected void LogOut()
{
     Session.Abandon();
     string loggedOutPageUrl = "Logout.aspx";
     Response.Write("&lt;script language='javascript'&gt;");
     Response.Write("function ClearHistory()");
     Response.Write("{");
     Response.Write(" var backlen=history.length;");
     Response.Write(" history.go(-backlen);");
     Response.Write(" window.location.href='" + loggedOutPageUrl + "'; ");
     Response.Write("}");
     Response.Write("&lt;/script&gt;");
}

Option #5: Clear browser’s history through JavaScript injecting through code-behind file via Page.ClientScript

Page.ClientScript.RegisterStartupScript(this.GetType(),"clearHistory","ClearHistory();",true);

Conclusion:
Any one or combination of above can be used to handle the scenario.

Though, I would like to call out that it’s not a good thing to mess with browser’s history. One should implement it, only if they really need it and are prepared to accept that it is not a good practice. Lastly, few would not work if one disables JavaScript.

 
2 Comments

Posted by on January 31, 2013 in ASP.NET, JavaScript

 

Tags: , , ,