• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] Cookie in JS setzen

Orpheo

New member
Hallo, bin ziemlicher Anfänger, habe es aber trotzdem geschafft, eine HP sowohl für Desktop als auch für kleine Geräte wie Smartphones ganz nett zu programmieren. Bei Abruf vom Smartphone aus schlägt ein JS "mobile.js" vor, zur mobilen Version zu wechseln - das klappt auch tadellos. Allerdings ist das Problem: Wenn ich den Tab dann schließe und die HP erneut aufrufe, lande ich eben doch bei der Desktop-Version. Ich vermute mal, dass das mobile.js ein Cookie setzen soll, der stets auf die mobile Version umleitet. Tatsächlich enthält das Script ja offenbar schon den Code für ein Cookie - nur irgendwas klappt da nicht. Habe ich da etwas falsch eingetragen? Kann jemand helfen?

Zweitens ist die Abfrage, ob die mobile Version aufgerufen werden soll oder nicht, eigentlich Unsinn, denn die Desktop-Version macht auf dem kleinen Bildschirm ohnehin nicht den geringsten Sinn. Wie kann ich denn den Übergang automatisch veranlassen?

Der Code lautet:

HTML:
function CookieSave(name, value, days)
	{
		if (typeof days != 'undefined') {
			var date = new Date();
			date.setTime(date.getTime() + (days*24*60*60*1000));
			var expires = "; expires=" + date.toGMTString();
		} else {
			var expires = "";
		}
		document.cookie = name + "=" + value + expires + "; path=/";
	}
 
	function CookieGet(name) {
		var nameEQ = name + "=";
		var ca = document.cookie.split(';');
		for(var i=0;i < ca.length;i++) {
				var c = ca[i];
				while (c.charAt(0)==' ') {
					c = c.substring(1,c.length);
				}
				if (c.indexOf(nameEQ) == 0) {
					return c.substring(nameEQ.length,c.length);
				}
		}
		return null;
	}
 
	function mredirect(){
        var mconfirm = confirm('Zur mobilen Version wechseln?');
        if(mconfirm == true){
            window.location.href =  "www.drkukowski.de/mobile"; // Hier das Verzeichnis festlegen
        }else{
            // Setze Cookie um spaetere Dialoge zu vermeiden
            CookieSave('NoMobile', '1', '90'); // Hier den Cookie-Namen ändern
        }
    }
 
 
    function Client() {
    }
 
    Client.prototype.mobileClients = ["240x320","blackberry","netfront","nokia","panasonic","portalmmm","sharp","sie-","sonyericsson","symbian","windows ce","benq","mda","mot-","philips","pocket pc","sagem","samsung","sda","sgh-","vodafone","xda","iphone","android"];
 
    Client.prototype.OperaMini = ["midp","opera mini"]
 
    Client.prototype.isMobileClient = function(userAgent)
    {
        userAgent=userAgent.toLowerCase();
        for (var i in this.mobileClients) {
            if (userAgent.indexOf(this.mobileClients[i]) != -1) {
                return true;
            }
        }
        return false;
    }
 
Client.prototype.isOperaMini = function(userAgent)
    {
        userAgent=userAgent.toLowerCase();
        for (var i in this.OperaMini) {
            if (userAgent.indexOf(this.OperaMini[i]) != -1) {
                return true;
            }
        }
        return false;
    }
 
    if(CookieGet('NoMobile') != 1) { // Hier den Cookie-Namen anpassen
 
        var client = new Client();
        if (client.isMobileClient(navigator.userAgent)) {
				mredirect();
            }
        else if(client.isOperaMini(navigator.userAgent)){
                document.observe('dom:loaded', mredirect);
            }
 
Zuletzt bearbeitet von einem Moderator:
Wenn ich den Tab dann schließe und die HP erneut aufrufe, lande ich eben doch bei der Desktop-Version.
Eigentlich sollte dann die Prüfung erneut ausgeführt werden und du nocheinmal gefragt werden - so ist das Skript aufgebaut. Oder was meinst du damit genau?
Ich vermute mal, dass das mobile.js ein Cookie setzen soll, der stets auf die mobile Version umleitet.
Nein, so ein Cookie wird da nicht gesetzt, sondern nur, ob man nicht auf die mobile Version umgeleitet werden will.
Wie kann ich denn den Übergang automatisch veranlassen?
Indem man das window.confirm() und die anschließende if-Abfrage rausnimmt.
 
Zurück
Oben