coyote: alle link-klicks abfangen für ajax load

Hallo,

ich möchte einer Seite aufbauen, die mit Ajax arbeitet (ist noch relativ neu für mich, aber hab schon etwas Erfahrung).

Gibt es eine Funktion, mit der ich alle Klicks auf irgendwelche Links abfangen kann, und den entsprechenden href abrufe, um entsprechend mittels Ajax die Anfrage zu bearbeiten? So könnte ich Links setzen, die auch ohne JS sauber arbeiten, aber für Leute mit JS eine schnellere Variante bereitstellen (da ja nicht immer alles neu geladen wird).

Alternativ wäre auch folgender Weg für mich akzeptabel:
onready setze ich einfach per jQuery allen <a> ein onclick="doAjax(this.href)"
Was haltet ihr von dieser Lösung?

Welche sollte ich verfolgen?

Warum?

Danke für euer Feedback
Gute Nacht
coyote

  1. Grüße,
    gib dem body eventlistener click, und wenn event.target einen href hat verarbeite den
    MFG
    bleicher

    --
    __________________________-

    FirefoxMyth
  2. Moin!

    Gibt es eine Funktion, mit der ich alle Klicks auf irgendwelche Links abfangen kann, und den entsprechenden href abrufe, um entsprechend mittels Ajax die Anfrage zu bearbeiten? So könnte ich Links setzen, die auch ohne JS sauber arbeiten, aber für Leute mit JS eine schnellere Variante bereitstellen (da ja nicht immer alles neu geladen wird).

    Das mit der Geschwindigkeit würde ich erstmal doch pauschal anzweifeln.

    Wenn du per Ajax nur HTML-Fragmente lädst, die andernfalls komplette Seiten wären, brauchst du auf dem Server irgendeine Art von Programmlogik, um die beiden Fälle zu behandeln. Direktes Laden von statischen HTML-Dateien ist definitiv schneller.

    Die Datenmenge zum Client ist dann aber etwas kleiner - was bei komprimierter Kommunikation auch nicht mehr sehr ins Gewicht fällt. Wieviel Kilobyte sparst du wirklich? Grafiken laden kommt ja trotzdem noch extra.

    Und am Ende muss das Fragment per Javascript in die neue Seite getan werden. Je nach Endgeräte-Power ein durchaus seitaufwendiger Vorgang. Mobile Clients sind cpu-mäßig extrem schwach...

    Die Frage ist also, wieviel Zeit du WIRKLICH sparst. Und ob das den Aufwand rechtfertigt, alle Links mit Javascript nachzubehandeln - denn auch das geschieht nicht in Nullzeit, sondern dauert einen Moment. Alternativ vergrößerst du die Ladezeit, indem du an jeden Link Extracode dranhängst...

    Alternativ wäre auch folgender Weg für mich akzeptabel:
    onready setze ich einfach per jQuery allen <a> ein onclick="doAjax(this.href)"
    Was haltet ihr von dieser Lösung?

    - Sven Rautenberg

  3. hi,

    Alternativ wäre auch folgender Weg für mich akzeptabel:
    onready setze ich einfach per jQuery allen <a> ein onclick="doAjax(this.href)"

    doAjax() muss ein false zurückgeben, dann funktioniert die Alternative.

    Was haltet ihr von dieser Lösung?

    Siehe Antwort vom Sven #berg.

    Viele Gr??e,
    Horst Kurz