You are not logged in.

  • Login

1

Friday, December 25th 2009, 7:54pm

URL-Anker in Java-Script nutzen

Hallo allerseits,

ich habe folgenden JS-Code auf meiner Seite, um einfache Tabs zu verwenden:

JavaScript Code

1
2
3
4
5
6
7
8
9
10
11
12
13
$(document).ready(function() {
		$(".tab_content").hide();
		$("ul.tabs li:first").addClass("active").show();
		$(".tab_content:first").show();
		$("ul.tabs li").click(function() {
			$("ul.tabs li").removeClass("active");
			$(this).addClass("active");
			$(".tab_content").hide();
			var activeTab = $(this).find("a").attr("href");
			$(activeTab).show();
			return false;
		});
	});

Nun möchte ich gerne die Möglichkeit einbauen, auf meine Seite mit einem Anker zuzugreifen, der einen spezifischen Tab direkt auswählt. Wie ist sowas in Java-Script möglich? Vielen Dank für eure Hilfe :)

P.S.: url.de/index.php#tab2 soll direkt den Tab mit der id tab2 aktivieren, wenn die Seite geladen wird.

2

Saturday, December 26th 2009, 1:27pm

Ja, ist möglich, schau dir dazu am besten mal folgendes an: http://de.selfhtml.org/javascript/objekte/location.htm#hash

3

Saturday, December 26th 2009, 2:36pm

typischer Fall von... man könnte eine einfache Lösung haben, wenn es nur einen Browser gäbe.

Hier hast du ein bisschen Lesestoff für die Theorie: http://ajaxpatterns.org/Unique_URLs
Nach den Kriterien gibts bereits folgende Lösung für jquery: http://www.mikage.to/jquery/jquery_history.html

Zusammenfassung:
Wenn man schon Anker Links unterstützt, dann wäre es doch Verschwendung alles doppelt zu implementieren indem der Anker und der AJAX Link mit einem Klick aufgerufen werden.
Als ruft man nur die Anker Links auf und pollt für Änderungen.

Problem: Onload Event...
Du nutzt jquery, damit hast du schonmal kein Problem, dass bei history back Aufrufen und direkten Aufrufen alle Browser die onload Methode mal anders aufrufen.

Problem: History...
Das Navigieren mit der vorwärts/zurück buttons sollte im Firefox sofort funktionieren.
Der IE verschluckt die Anker jedoch einfach in der History. Hier muss man ein verstecktes Iframe Objekt nutzen.
Der Safari ändert Ankerlinks erst nach x Millisekunden, weswegen das Polling versetzt aufgerufen werden muss.

4

Sunday, December 27th 2009, 1:13am

Vielen Dank für Kurz- und Langform, da arbeite ich mich in Ruhe durch. Wenn ich es angepasst habe, schreibe ich euch hier meine Implementation rein.

Similar threads

Social bookmarks