VPNwelt.com sucht Feedback Wie der Name schon sagt handelt es sich um eine Review Website für…
von: florian.berg.privat
Versuch Backlinks oder Keywords zu erstellen. Dein Content muss auch gut sein. Hier ein Artikel das…
von: welkercarmen5
Matthes schrieb:
Lösung: in ajaxify_link prüfen, ob das Element ein a oder ein span ist und bei letzterem abbrechen. Fertig.
...oder das id-Attribut aus den span\'s entfernen, wie es hier schon der Fall ist:
Stimmt, die werden sonst ja gar nicht verwendet. Sieht nach der simpleren Lösung aus, aber das dürfte Fehler auswerfen, weil die ganze ajaxify-Kette scheitert.
PS [17:02 Uhr]: Ich würde diese Festlegung ganz lassen, das ist unpraktisch in der Wartung. Neuer Menüpunkt? JavaScript öffnen, bearbeiten, ...
document.querySelectorAll("li:not([class]) a[id]") - fertig. Iterieren, an ajaxify_link übergeben, fertig. Keine Prüfung notwendig, keine hardcoded ID-Selektoren.
Auch wieder wahr. Dann so:
[javascript]function ajaxify_link(link_element) {
if (link_element === null) return;[/javascript]
Für die reine Abfrage des Vorhandenseins brauchen wir dann aber auch keine id mehr. Also dann etwas wie
document.querySelectorAll("nav li:not([class]) a")
d_spaete schrieb:
Auch wieder wahr. Dann so:
[javascript]function ajaxify_link(link_element) {
if (link_element === null) return;[/javascript]
Für die reine Abfrage des Vorhandenseins brauchen wir dann aber auch keine id mehr. Also dann etwas wie
document.querySelectorAll("nav li:not([class]) a")
Wir brauchen etwas, um die Menü-Links vom Sprachlink zu unterscheiden, deshalb die ID. Das ginge auf etliche andere Weisen auch, aber die würden aufgeblähtere Konstrukte erfordern.
Von daher würde ich meine Variante bevorzugen, dann braucht es auch keine Prüfung, ob das Link-Element überhaupt existiert und ein gewünschtes ist.
PS [18:23 Uhr]: Man könnte natürlich die IDs weglassen und das letzte Element nicht verwenden, indem man nur bis zu $Länge-1 durch das Array geht. Das wäre nicht sonderlich aufgebläht.
Jo, die hatte ich übersehen.
document.querySelectorAll("nav li:not([class]):not(:last-child) a")
Ja, das ist sehr gut.
Was schuldet uns Xeno jetzt? Machst du die Rechnung und zahlst mich aus?
Hi ihr beiden. Ich hatte am Freitag Mittag noch die Version ohne IDs in dem Span Element getestet, allerdings funktioniert dann die Ajax Geschichte gar nicht (quasi als wäre kein Script vorhanden). Am Wochenende kam ich gar nicht dazu zu schauen, jetzt seh ich erstmals eure Vorschläge. Ich muss gestehen, ich hatte damals den Vorschlag von Matthes ausprobiert, allerdings hab ich irgendwo einen Syntaxfehler gehabt, den ich nicht gerade biegen konnte. Autodidaktisch ist Javascript echt schwer zu peilen. \'
Ich teste gerade eure letzten Ideen. Allerdings tu ich mich da wirklich schwer. Mal sehen ob ich das gleich noch korrekt zusammenschreiben kann. Vielen Dank schon einmal. :]
Xenotyp schrieb:
allerdings hab ich irgendwo einen Syntaxfehler gehabt, den ich nicht gerade biegen konnte. Autodidaktisch ist Javascript echt schwer zu peilen. \'
Du kannst immer gerne fragen. Auf allen Kanälen, jederzeit.
Xenotyp schrieb:
Ich teste gerade eure letzten Ideen. Allerdings tu ich mich da wirklich schwer. Mal sehen ob ich das gleich noch korrekt zusammenschreiben kann. Vielen Dank schon einmal. :]
Gerne, ich finde das klasse. Wie oft haben wir hier schon Leute, die sich über Hilfe freuen und begierig sind, sich zu verbessern?
document.querySelectorAll("nav li:not([class]):not(:last-child) a")
Wo ich diesen Part einbaue, habe ich noch nicht raus. Alle Einbauten sind irgendwie gescheitert. Das Scheitern zeigt sich dann so, dass der Effekt dass die Seite nicht komplett neulädt, ganz einfach nicht da ist. Unten habe ich eine meine Einbauversuche einmal angehangen. Könnt ihr mir noch einmal unter die Arme greifen?
Ursprüngliche Datei var readyStateCheckInterval = self.setInterval(function() {
if (document.readyState === "complete") {
clearInterval(readyStateCheckInterval);
setupLinks();
popStateHandler();
}
}, 10);
function setupLinks() {
ajaxify_link(document.getElementById("index"));
ajaxify_link(document.getElementById("avp2k9"));
ajaxify_link(document.getElementById("design"));
ajaxify_link(document.getElementById("smilies"));
ajaxify_link(document.getElementById("stuff"));
}
function ajaxify_link(link_element) {
link_element.onclick = null;
if (!link_element.addEventListener) {
link_element.attachEvent("onclick", function(e) {
e.returnValue = false;
changeBrowserURL(link_element);
getPage(link_element.href);
}, false);
}
else {
link_element.addEventListener("click", function(e) {
e.preventDefault();
changeBrowserURL(link_element);
getPage(link_element.href);
}, false);
}
}
Geänderte Version: var readyStateCheckInterval = self.setInterval(function() {
if (document.readyState === "complete") {
clearInterval(readyStateCheckInterval);
setupLinks(); <--- nicht mehr benötigt? ###
popStateHandler();
}
}, 10);
function setupLinks() { <--- nicht mehr benötigt? ###
ajaxify_link(document.getElementById("index"));
ajaxify_link(document.getElementById("avp2k9"));
ajaxify_link(document.getElementById("design"));
ajaxify_link(document.getElementById("smilies"));
ajaxify_link(document.getElementById("stuff"));
}
function ajaxify_link(link_element) {
if (link_element === null) return; <--- hinzugefügt ###
document.querySelectorAll("nav li:not([class]):not(:last-child) a");
^ testweise in div. Schreibweisen hinzugefügt, hier vermutlich völlig falsch? ###
if (!link_element.addEventListener) {
link_element.attachEvent("onclick", function(e) {
e.returnValue = false;
changeBrowserURL(link_element);
getPage(link_element.href);
}, false);
}
else {
link_element.addEventListener("click", function(e) {
e.preventDefault();
changeBrowserURL(link_element);
getPage(link_element.href);
}, false);
}
}
Matthes schrieb:
Was schuldet uns Xeno jetzt? Machst du die Rechnung und zahlst mich aus?
Das hatte ich gar nicht gelesen. Wahrscheinlich war ich zu fasziniert von diesen 5 goldenen Sternen. Ja, ich mache die Rechnung dann zum Monatswechsel fertig. Wer weiß, was da noch dazu kommt.
@Xeno:
Wenn ich gerade nichts übersehe, täte ich nur die setupLinks()-Funktion anpassen und Rest so wie im Original belassen:
function setupLinks() {
var links = document.querySelectorAll("nav li:not([class]):not(:last-child) a");
for (var i = 0; i < links.length; i++) {
ajaxify_link(links[i]);
}
}
Beitrag erstellen
EinloggenKostenlos registrieren