Kategorien
HTML5 JavaScript

HTML5 Datenbank mit persistence.js Tutorial

Mit persistence.js lässt sich eine lokale Datenbank mit Javascript erstellen ohne einen Datenbank-Server und eine Internet Verbindung.

Unterstütze mobile OS von persistence.js:

Kategorien
jQuery

jQuery asynchroner Ajax Call mit Callback Success Funktion

Bei der Programmierung von asynchronen Funktionen mit Ajax steht man vor dem Problem, dass die Funktion keinen Rückgabewert im herkömmlichen Sinne haben. Die folgende Funktion gibt nicht etwa die Variable response zurück, obwohl der Ajax Request erfolgreich ausgeführt wurde aufgrund der Asynchronität.

function test()
 {
 $.ajax({
 async: true,
 cache:false,
 url: "testUrl.php",
 beforeSend: function (jqXHR, settings) {
 url = settings.url;
 console.log(url);
 },
 success: function (response) {
 console.log("Ajax Call Success");
 },
 error: function (response) {
 handleError(response);
 }
 }
 );
 return response;
 }

Um eine das Ergebnis eines asynchronen Calls (Ajax) weiterverarbeiten zu können, kann man entweder eine Funktion aufrufen (schlecht, weil feste Bindung):

Kategorien
jQuery Mobile

Google Analytics und jQuery Mobile

Bei der Benutzung von Google Analytics mit jQuery Mobile gibt es ein paar Besonderheiten zu beachten. So wird nicht jede Seite neu geladen bei jQuery Mobile, sondern der Inhalt (per Ajax) in die bestehende Seite eingefügt und die URL angepasst, so dass der Eindruck einer App entsteht.

Für die Verwendung von Google Analytics mit jQuery Mobile bedeutet dies, dass man am besten manuell die Pageviews zählen sollte:

Man integriert in den <head> Teil der Applikation den Code:

var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXXX']);
/* do not track first page here*/
/*_gaq.push(['_trackPageview']);*/

(function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
Kategorien
JavaScript

Javascript Date Vergleich auf Tagesbasis

Zum Vergleich von 2 Date Objekten in Jacascript kann man die folgende Funktion benutzen, die bestimmt, ob ein Datum größer ist auf Tagesbasis. Dies ist sehr nützlich, wenn man ein Datum aus einem Datepicker auswählt:

function isDateInFutureOnDailyBasis(date1, date2)
{
     if(date1.getFullYear() > date2.getFullYear())
    {
        return true;
    }
    else if(date1.getFullYear() == date2.getFullYear())
     {
         if(date1.getMonth() > date2.getMonth())
         {
             return true;
         }
         else if(date1.getMonth() == date2.getMonth())
         if(date1.getDay() > date2.getDay())
         {
             return true;
         }
     }

    return false;
}

 

Kategorien
jQuery Mobile Phonegap/Cordova

Mobile Multi Share Implementation mit jQuery Mobile

Mit dem passendem HTML lässt sich so sehr komfortabel ein Share-Alternative aufbauen für mobile Anwendungen um Platz zu sparen (mit jQuery Mobile).

Dabei werden die Share Dienste in ein <select> Tag eigetragen und per Javascript einzeln gehandelt. Das Ergebnis sieht auf Android-Phones so aus:

Kategorien
JavaScript

Facebook Like ohne Facebook Button mit Javascript

Wenn man in einer mobilen Anwendung einen eigenen Button anstelle des Facebook Buttons erstellen will oder z.B. eine Select Box zum Sharen, kann man mittels Javscript das Facebook Like Event triggern mittels:

Facebook Like mit Javascript triggern

function shareFacebookLike(url)
{
    window.location="http://www.facebook.com/sharer/sharer.php?u=" + encodeURIComponent(url);
}

Twitter Tweet mit Javascript triggern

function shareTwitter(url, text)
{
    window.location = "https://twitter.com/intent/tweet?text=" + encodeURIComponent(text) + "&url=" + encodeURIComponent(url);
}

Email schreiben mit Javascript triggern

function shareEmail(subject, body)
{
    window.location = "mailto:&subject=" + subject + "&body=" + body;
}
Kategorien
Adobe InDesign Script JavaScript

Praktische String Funktionen in Javascript für InDesign und Web

Entfernt führende und beendende Leerzeichen

function trim (str) 
{
  return str.replace (/^\s+/, '').replace (/\s+$/, '');
}

Check, ob ein String leer ist, findet auch z.B. “    “

function isBlank(str) 
{
    return str.replace(/\s/g,"") == ""  ;
}

Checkt, ob ein String enthalten z.B. ob script in javascript enthalten ist – true.

function stringContains(str, needle )
{
    return str.indexOf(needle) != -1    
}
Kategorien
jQuery

jQuery animate ruckelt im Chrome

Folgender Code ruckelt im Chrome:

        $('#foo')
            .animate({
            'marginLeft' : '100px'
        }, 900) ;

die Lösung war ziemlich einfach:

        $('#foo').css({WebkitTransform: 'translateX(0px)'})
            .animate({
            'marginLeft' : '100px'
        }, 900) ;

Bei Problemen: jQuery updaten auf die neueste Version (1.8.2.)

Kategorien
jQuery

Javascript Page Cookie setzen

Um mit Javascript einen Cookie zu setzen, der nur auf der aktuellen Seite gültig ist bspw. foo.de/mySite3.php muss man den passenden Pfad setzen, den man mit Javascript folgender maßen auslesen kann. Ich benutze zum Setzen von Cookies die Lib jQuery Cookies. Der Pfad muss im Format „/mySite3.php“ gesetzt werden, dazu wird der vordere Teil der URL bis nach der Domain abgeschnitten.

    function setCurrentPageCookie(expiresHours) {
        var domain = document.domain;
        var path = document.URL;
        console.log(domain);
        console.log(path);
        var relativePath = path.substring(path.indexOf(domain) + domain.length);
        console.log(relativePath);
        $.cookies.set('cookieName', '1', {
            path: relativePath,
            hoursToLive : expiresHours
        });
    }
Kategorien
CSS JavaScript Web Frontend Webdeveloper Tools

Debugging Tools für Firefox, IE, Chrome, Safari, Opera

Zum Debuggen von Webseiten braucht man immer spezielle Entwickler Tools für jeden einzelnen Browser, weil sich die Darstellung in jedem Browser ändert oder Javascript Fehler nur in bestimmten Browsern auftreten. Bevor man an die Arbeit geht sollte man unbedingt checken, ab das der Browser Cache deaktiviert ist in dem jeweiligen Browser, sonst erhält man eine nicht aktuelle Version der Webseite.

Debugging Tools beim Firefox 15

Geht über das bekannte und beste Plugin: Firebug

Ich verwende zusätzlich die Plugins: Web Developer und Colorzilla. Durch die sehr guten Plugins ist der Firefox mein Entwicklungsbrowser der Wahl.