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

Javascript weiterleitung auf Mobile Cookie/Header refresh

th_wolfgang

New member
Hallo,

da ich mit JavaScript „noch nicht so Sattelfest bin“, ein kurze Frage. Das Script leidet meine Webseite zu einem Ordner für Mobile (Handyansicht). Umfasst dies hier alle Handytypen?

Was passiert mit den Cookies in diesem Script? Wenn ich das Script weg lasse und per htaccess weiterleite, habe ich ein Cookieproblem, (Warenkorb bleibt leer im Shop) da anscheinst trotz htaccess bereits Header und Cookies gesetzt werden. Mit dem Script funktioniert der Warenkorb wieder. Zum Verständnis würde mich interessieren ob das Script hier die Header und Cookies bei der Weiterleitung wieder auf 0 setzt? Oder warum dies beim Script funktioniert und bei htaccess nicht, würde da ich mehrere Shops auf eine Seite umleiten möchte (mehrere Webseiten unterschiedlicher Server teilen sich die Smartphoneansichts-Seite) gern per htaccess umleiten aber das Cookieproblem bekomme ich einfach nicht in den Griff.

Script:
Code:
<script type="text/javascript">	

	if ((typeof w2dsmartphone) != 'function') {
		function w2dsmartphone(currentSite, force, ipad, forwardurl, desktopurl, mobileurl){
			var userAgentId = window.navigator.userAgent.toLowerCase();
			
			if ((userAgentId.indexOf('iphone') != -1) || (userAgentId.indexOf('ipod') != -1) || ((userAgentId.indexOf('ipad') != -1) && ipad) || (userAgentId.indexOf('android') != -1)) {
				if (force) {
					if (currentSite != 1) {
						window.location.replace(mobileurl);
					}
				}
				else {
					var preferredSite = 0;
					var now = new Date();
					var expire = new Date(now.getTime() + 60 * 60 * 24 * 365);
					var expireString = expire.toGMTString();
					
					if (window.location.search.indexOf('w2dsmartphone=force') != -1) {
						document.cookie = 'w2dsmartphone=' + ((currentSite == 1) ? 'mobile' : 'desktop') + '; path=/; expires=' + expireString;
						preferredSite = currentSite;
					}
					else {
						if ((document.cookie.indexOf('w2dsmartphone=mobile') != -1)) {
							preferredSite = 1;
						}
						
						if ((document.cookie.indexOf('w2dsmartphone=desktop') != -1)) {
							preferredSite = 2;
						}
					}
					
					if (preferredSite == 0) {
						window.location.replace(forwardurl);
					}
					else {
						if (currentSite != preferredSite) {
							window.location.replace((preferredSite == 1) ? mobileurl : desktopurl);
						}
						else {
							document.write('<p>');
							if (currentSite == 1) {
								document.write("Diese Version der Website wurde für Smartphones optimiert.");
							}
							else {
								document.write("Sie betrachten die Standardversion der Website.");
							}
							document.write(' <a id="w2dsmartphonedesktop" class="s2d" href="' + forwardurl + '">Anderen Darstellungmodus wählen.</a>');
							document.write('</p>');
						}
					}
				}
			}
		}
	}

	w2dsmartphone(2, false, false, "./726576a4950fda101.php", "./index.php" , "./mobile/smartphone/index.php");
</script>

Danke & LG
Wolf
 
Umfasst dies hier alle Handytypen?
Ich denke, dass du damit weder Winodws Phones noch Blackberries abdeckst... ev. auch noch andere nicht.

Und sehe ich das richtig, dass deine mobile Ansicht nicht auf einer anderen Domain liegt, sondern einfach nur einen anderen Pfad hat? Dann dürftest du eigentlich überhaupt keine Probleme mit irgendwelchen Cookies haben...
 
Hallo,
dank dir,

leider doch, das System vergibt einen Session-Cookie, wie dieser genau generiert wird ist schwer zu sagen, da das Programm sehr umfangreich ist. Ich Teste seit Tagen (und Wochen), da ich immer merkte, das "was nicht richtig funktioniert, hatte mit htaccess umgeleitet. Problem 1. die Smartphone-Ansicht, kann ohne die Desktop-Version keinen Warenkorb abschließen, dachte am Anfang das es auch separat geht, leider nur bis "Einkauf Abschließen", dann kommen Fehlermeldungen...

Aber ja, die Smartphone-Variante ist in einem Unterordner der gleichen Seite. Wie kann ich das Script anpassen, um weitere z.B. Windows Phone mit umleiten zu lassen? Ich brauche doch einfach nur die userAgentId zu ergänzen!?

Code:
if ((userAgentId.indexOf('iphone') != -1) || (userAgentId.indexOf('ipod') != -1) || (userAgentId.indexOf('blackberry') != -1) || (userAgentId.indexOf('iOS') != -1) || (userAgentId.indexOf('safari') != -1) || (userAgentId.indexOf('iemobile') != -1) || (userAgentId.indexOf('iris') != -1) || (userAgentId.indexOf('kindle') != -1) || (userAgentId.indexOf('opera') != -1) || (userAgentId.indexOf('palm') != -1) || (userAgentId.indexOf('xda') != -1) || (userAgentId.indexOf('phone') != -1) || (userAgentId.indexOf('avantgo') != -1) || (userAgentId.indexOf('vodafone') != -1) || (userAgentId.indexOf('plucker') != -1) || (userAgentId.indexOf('avantgo') != -1) || (userAgentId.indexOf('bada') != -1) || (userAgentId.indexOf('symbian') != -1) || (userAgentId.indexOf('treo') != -1) || (userAgentId.indexOf('compal') != -1) || (userAgentId.indexOf('elaine') != -1) || (userAgentId.indexOf('xiino') != -1) || ((userAgentId.indexOf('ipad') != -1) && ipad) || (userAgentId.indexOf('android') != -1))

Das müsste funktionieren, oder? Auch würde ich gern "verstehen", wie die Cookies hierbei wieder auf 0 gesetzt werden, wenn dem dann so sein sollte.

Leider habe ich mir die „Falsche Software“ als Shopsystem zugelegt, werde dies in der nächsten Zeit ändern, allerdings bis dahin muss diese hier wenigstens zur Überbrückung mal funktionieren.

Ich Danke dir
Wolf
 
Zuletzt bearbeitet:
Das müsste funktionieren, oder?
Safari wird auch von normalen Mac verwendet. Ist also durchaus ein Desktopbrowser.

Ich würde bei sowas ja nie über den userAgent gehen, sondern einfach die Bildschirmgröße auslesen. Das ist ja das Kriterium, nach dem du etwas anderes darstellen willst, weil du auf den Mobilgeräten weniger darstellen kannst.

wenn dem dann so sein sollte.
Bei dem gezeigten Code wird kein Cookie auf 0 gesetzt...
 
Hallo,
dank dir,

dann werde ich die Umleitung per MediaQueries durchzuführen. Das dumme ich bekomme immer Cookieprobleme, wenn ich kein javascript benutze, warum auch immer, das ist mir bis jetzt unerklärlich.

Besten Dank
Wolf
 
Du kannst ja auch per JS die Bildschirmgröße abfragen und dadurch die Umleitung per JS realisieren.
 
Zurück
Oben