Kai345: XPath -> Dieses Forum : Optimierung möglich?

Beitrag lesen

[latex]Mae  govannen![/latex]

Wie du vielleicht gesehen hast, frage ich zusätzlich noch ab, ob der Browser den Link bereits als visited markiert hat. Denn wenn man ein Posting gelesen hat, bekommt man die Forumshauptseite immer noch ohne class=visited ausgeliefert, weil stark gecacht wird und die Threadliste nur bei neuen Postings neu ausgeliefert wird.

Hervorragend. Das war auch ein Problem, das mir die ganze Zeit Kopfzerbrechen bereitet hat. Gelöst, bevor ich überhaupt fragen konnte :)

Z.B. manuelles DOM-Traversing: den Thread-Starter holen, dann von hinten durch ungelesen iterieren und bei jedem Knoten prüfen, ob er noch Kind vom Thread-Starter ist (mit contains() bzw. compareDocumentPosition()). Ich habe solche halb-XPath-halb-DOM-Lösungen noch nicht ausprobiert, es kann sein, dass sie schneller sind.

Diese Möglichkeit werde ich später auf jeden Fall mal testen.

var t = ungelesene[ug_count - 1].getNodesByXPath("ancestor::li[contains(@class,'thread-start')]/descendant::li[not(contains(@class, 'visited'))]/descendant::span[contains(@class, 'posting')]/descendant::a");

Scheint mir überkomplex, weil auch das a-Element class=visited hat.

Das ist völlig an mir vorüber gegangen. Das ändert einiges.

var ungelesene = msg_root.getNodesByXPath("descendant::span[contains(@class, 'subject')]/child::a[not(contains(@class, 'visited'))]");

und

var ug_last = ungelesene[ug_count - 1].getNodesByXPath("ancestor::li[contains(@class,'thread-start')]/descendant::a[contains(@class, 'title') and not(contains(@class, 'visited'))]")[0];

Mit deiner Variante mit position()=0 hatte ich leider (noch) nicht den gewünschten Erfolg, es war auch <del>spät</del><ins>früh></ins> (so gegen 5:40 am Morgen), aber ich werde aber auch diesbezüglich mit Variationen weitertesten.

Aber die XPath/DOM-Methode dürfte vermutlich oft schneller sein, die meisten Threads bleiben ja recht überschaubar. Würde also nur dann zum Problem, wenn ausgerechnet ein sehr großer Thread mit vielen ungelesenen an letzter Stelle steht.

Cü,

Kai

--
„It's 106 miles to Chicago, we got a full tank of gas, half a pack of cigarettes,
it's dark, and we're wearing sunglasses“.  „Hit it!“
Foren-Stylesheet
Selfzeugs
SelfCode: sh:( fo:| ch:? rl:( br:< n4:( ie:{ mo:| va:) js:| de:> zu:) fl:( ss:| ls:?