JavaScript Jquery "Click - window.location"

gfeschu

Ensign
Registriert
Aug. 2010
Beiträge
147
Hallo zusammen.

Ich habe irgendwo einen Fehler aber mir wird nichts angezeigt. Der Zurück Button funktioniert ohne Probleme. Der Home Button hingegen macht nichts.

Habe ich was falsch bei den Anführungszeichen bei document.write?

Lieber Gruss,
Gfeschu

Hier der Code:

Code:
<style type="text/css">
	.errorbox{
	font-weight: normal;
	font-size: 14px;
	}
	
	.cstbutton {
	padding: 4px 8px;
	display: inline;
	border: none;
	color: #fff;
	cursor: pointer;
	font-weight: bold;
	border-radius: 5px;
	-moz-border-radius: 5px;
	-webkit-border-radius: 5px;
	text-shadow: 1px 1px #333;
	text-decoration: none;
	font-size: 11px;
	float: right;
	}
	
	.cstbutton:hover {
	background-position: 0 center;
	}
	
	.cstbutton:active {
	background-position: 0 top;
	position: relative;
	top: 1px;
	padding: 6px 10px 4px;
	}
	
	.cstbutton.red { background-color: #EA2200; }

</style>


xxxxxxxxxxxx CODE


<SCRIPT language="JavaScript">	
	$(document).ready(function () {	

		$('#homebutton').click(function() {
			window.location = "http://xxxxxx.ch/home
		});
	});
</script>


xxxxxxxxxxxx CODE


<form>
	<script type="text/javascript">
		if(history.length == 0) {
			document.write("<input type='button' id='homebutton' class='cstbutton red' value='◄ Home' name='home_button'>");
		}
		else
		{
			document.write("<input type='button' class='cstbutton red' value='◄ Zurück' name='back_button' onClick='javascript:history.go(-1)'>");
		}
	</script>								
</form>


xxxxxxxxxxxx CODE
 
Zuletzt bearbeitet:
Versuchs mal mit folgendem:

Code:
$("#homebutton").live("click", function(event) {
	window.location = "http://dmstest.sbb.ch/OTCS/llisapi.dll?func=Enterprise.Home";
});
 
history.length ist ab und an mal 0 und ab und an mal 1, variiert je nach Browser.

IE und Opera 0.
FF, Chrome, Safare 1.

Funktioniert ansonsten prima (wenn man das beachtet und die '' bei window.location noch setzt), vllt. hast du einfach JQuery nicht eingebunden?
 
Zuletzt bearbeitet:
Sicherer ist wenn du die states speicherst und dann per history.state ausliest, wo du dich befindest. Das geht ohne Polyfill leider nur ab IE10.
 
Danke für die Antworten.

Habe das Problem gefunden.
Jquery hatte wirklich gefehlt. Habe jetzt die Funktion in einfaches JavaScript umgeschrieben, da sonst Fehler auftreten könnten wenn 2 Jquery Versionen geladen werden (könnte bei manchen Seiten, bei denen der Button ist, vorkommen).

Die einzigen Browser die ich beachten muss sind:

IE (Standard ist 8)
Safari (für mobile devices)

Hat jemand einen Tipp um das history.length auch auf Safari anwenden zu können?
Weil bei 0 & 1 den Homebutton anzeigen wäre ja höchst unschön... :)


Lieber Gruss,
Gfeschu


Edit: Die funktion will nicht funktionieren. Was mache ich falsch?

Code:
<SCRIPT language="JavaScript">	
	
	function newHome()
		{

		window.location = "http://dmstest.sbb.ch/OTCS/llisapi.dll?func=Enterprise.Home";

		}

</script>


if(history.length == 0) {
   document.write("<input type='button' id='homebutton' class='cstbutton red' value='◄ Home' name='home_button' onclick='newHome'>");
		}
 
Zuletzt bearbeitet:
Du hast JS Code außerhalb des Script-Tags und dann müsste es auch onClick='newHome()' heißen.

Zu dem history.length-Problem, sei kreativ. ;)
- Herausfinden welcher Browser
- Cookie auf der Startseite
- document.referrer kann auch funktionieren, aber ist nicht eindeutig und zuverlässig.

Punkt1 wäre wohl am optimalsten. (Du benutzt ja eh JQuery, einfacher geht es nicht. (wobei die selbst das nicht empfehlen :D http://api.jquery.com/jQuery.browser/ ; und Opera würde ich nochmal schauen, ob die nicht mit Webkit auch dir ne 1 zurückgeben. IE10 weiß ich auch nicht, ob es sich geändert hat. Also mal alles austesten)
 
Zuletzt bearbeitet:
Danke vielvielmals!

Funktioniert jetzt tadellos! Auch auf jedem Browser. :)

Lieber Gruss,
Gfeschu
 
Zurück
Oben