ASP.NET – Swipe events mit jQuery Mobile
Mit Hilfe der Javascript-Library jQuery und jQuery Mobile kann man auf ASP.NET-Seiten Wischbewegungen auswerten. Um die Webseiten ohne iPad zu testen, kann man die Desktop-Version von Safari verwenden.
Zunächst fügt man eine neue WebForm in die ASP.NET-Anwendung ein. Diese sieht dann wie folgt aus:
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="bla.aspx.vb" Inherits="WebApplication1.bla" %> <!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></title> </head> <body> <form id="form1" runat="server"> <div> </div> </form> </body> </html>
im Head-Bereich werden die jQuery-Dateien eingebunden (ich habe die Dateien in das root-Verzeichnis der Webanwendung kopiert):
<link rel="stylesheet" href="./jquery.mobile.css" /> <script src="./jquery.js"></script> <script src="./jquery.mobile.js"></script>
dann kommt der Seiten-Inhalt – dieser wird im body-Bereich der Datei angelegt:
<div id="page1" data-role="page" > <asp:Button ID="Button1" runat="server" style="z-index: 1" Text="Page 1" /> </div> <div id="page2" data-role="page" > <asp:Button ID="Button2" runat="server" style="z-index: 1" Text="Page 2" /> </div>
die beiden div-Elemente bekommen den Zusatz data-role=page. Damit erzeugt HTML5 mehrere Web-Seiten innerhalb einer einzigen aspx-Datei. Der Browser zeigt zunächst nur den Inhalt des ersten DIV-Element (mit Attribute page) an. Jetzt wird noch der Javascript-Code benötigt um auf den Event swipe zu reagieren:
$(function() { $('body').bind('swiperight', function(e) { alert('You swiped right!'); e.stopImmediatePropagation(); return false; }); $('body').bind('swipeleft', function(e) { alert('You swiped left!'); e.stopImmediatePropagation(); return false; }); });
Jetzt muss man nur noch die Seite bei einer Wischbewegung wechseln. Dazu muss man prüfen auf welcher Seite man gerade steht und auf die jeweils andere Seite wechseln:
var curPage = 1; $(function() { $('body').bind('swiperight', function(e) { //alert('You swiped right!' + curPage); if (curPage == 2) { curPage = 1; $.mobile.changePage("#page1", "slide", true, true); } e.stopImmediatePropagation(); return false; }); $('body').bind('swipeleft', function(e) { //alert('You swiped left!' + curPage); if (curPage == 1) { curPage = 2; $.mobile.changePage("#page2", "slide", false, true); } e.stopImmediatePropagation(); return false; }); });
hier noch einmal die gesamte Seite:
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Swipe.aspx.vb" Inherits="WebApplication1.Swipe" %> <!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></title> <link rel="stylesheet" href="./jquery.mobile.css" /> <script src="./jquery.js"></script> <script src="./jquery.mobile.js"></script> <script type="text/javascript"> var curPage = 1; $(function() { $('body').bind('swiperight', function(e) { alert('You swiped right!' + curPage); if (curPage == 2) { curPage = 1; $.mobile.changePage("#page1", "slide", true, true); } e.stopImmediatePropagation(); return false; }); $('body').bind('swipeleft', function(e) { alert('You swiped left!' + curPage); if (curPage == 1) { curPage = 2; $.mobile.changePage("#page2", "slide", false, true); } e.stopImmediatePropagation(); return false; }); }); </script> </head> <body> <form id="form1" runat="server"> <div id="page1" data-role="page" > <asp:Button ID="Button1" runat="server" style="z-index: 1" Text="Page 1" /> </div> <div id="page2" data-role="page" > <asp:Button ID="Button2" runat="server" style="z-index: 1" Text="Page 2" /> </div> </form> </body> </html>
-
September 5, 2011 um 1:09 pmJSF – Swipe events mit jQuery Mobile « Srccode's Blog