Allegro Seller Info 0.1.9
• tech • 295 słów • 2 minuty czytania
Po miesiącu spokoju pojawiły się jakieś zmiany na Allegro, które wymusiły wprowadzenie drobnych poprawek do mojego UserJS-a i wydanie kolejnej nowej wersji (0.1.9).
Głównym problemem są zmiany na stronach aukcji wokół miejsca wstrzykiwania informacji o lokalizacji. Zmodyfikowano nieco layout i strukturę elementów DOM. Wygląda na to, że obecnie wykorzystywany jest model flexbox (Flexible Box Layout) i grid (Grid Layout) do układania kontenerów związanych z atrybutami i informacjami o aukcji.
Po raz kolejny “odświeżono” także wygląd “boxa” z informacjami o dostawie. Dlatego zdecydowałem się powrócić do poprzedniej koncepcji - wyświetlać lokalizację nad informacjami o dostawie, tak jak to miało miejsce w pierwszych wersjach. W istocie użyty jest też podobny kod, a przynajmniej jego logika, z tamtych czasów.
Przy tej okazji zdecydowałem się na poprawki w sposobie “wyciągania” lokalizacji. Poprzedni kod długo działał dobrze, ale od jego powstania wiele się pozmieniało w strukturze dokumentu. W pewnych okolicznościach - zagraniczna lokalizacja lub niespodziewany format - zwraca cały przechwycony tekst danego węzła i jego potomków.
for (var e of node.getElementsByTagName('*')) {
if (e.innerText.startsWith('Wysy\u0142ka z:')) {
var i = e.innerText.lastIndexOf(', Polska');
loc = e.innerText.substr(10, i != -1 ? i - 10 : undefined).trim();
break;
}
}
W nowej wersji wykorzystano proste wyrażenie regularne (bo szybciej, prościej i mniej upierdliwego kodu niż przy ręcznym parsowaniu) dla dopasowania i przechwycenia informacji o miejscu wysyłki towaru.
for (var e of node.getElementsByTagName('*')) {
var m = e.innerText.match("^Wysy\u0142ka z: (.*)\n");
if (m && m.length == 2) {
var i = m[1].lastIndexOf(', Polska');
loc = i != -1 ? m[1].substr(0, i) : m[1];
break;
}
}
Nadal pozostaje wycinanie nazwy państwa dla krajowych lokalizacji.
Pomijam wprowadzone drobne poprawki w stylach.
Nowa wersja już wylądowała w moim repozytorium UserScripts. Auto-aktualizacje powinny zapewnić używanie najnowszej wersji w Waszych przeglądarkach. Zobaczymy jak długo obecna wersja podziała bez kolejnych “fixów”.
Komentarze (0)