rombau / osext2

Online Soccer Extension based on Chrome API
MIT License
1 stars 0 forks source link

Möglicherweise fehlende Komponenten im Seiten-Handler #30

Closed Eselce closed 2 years ago

Eselce commented 2 years ago

Keine große Sache, ist einfach nur beim Debuggen aufgetreten und ist sicher kein "use case":

[Handler] Page found for https://os.ongapo.com/haupt.php:: Managerbüro [handler.js:4:24](moz-extension://a9c8ff8a-c786-42d7-88c2-17641ff83647/source/handler.js)
TypeError: can't access property "parentElement", teamChangeLink is null
    process moz-extension://a9c8ff8a-c786-42d7-88c2-17641ff83647/source/pages/main.js:21
    <anonymous> moz-extension://a9c8ff8a-c786-42d7-88c2-17641ff83647/source/handler.js:6

Offenbar war die Seite zu dem Zeitpunkt nicht vollständig. Betrifft diese Stelle in main.js:

let teamChangeLink = doc.querySelector('a[href="?changetosecond=true"]');
let matches = /Willkommen im Managerb.ro von (.+)/gm.exec(teamChangeLink.parentElement.childNodes[0].textContent);

Klares Problem hier, daß der Link in der ersten Zeile nicht gefunden wurde. Scheint mir aber ein Ausnahmefall zu sein...

P.S.: Interessant ist übrigens die Verdoppelung des Doppelpunktes in der Log-Meldung...

rombau commented 2 years ago

Der Log-Output mit dem Doppelpunkt kommt aus document.location. Der Doppelpunkt in der Request-URL wird in Page.byLocation() ignoriert; es wird trotzdem das Managerbüro gefunden. Nur im Response-Body steht <h1>404</h1><h2>Seite nicht gefunden</h2>, und nicht die erwarteten Inhalte.

Eventuell könnte man in Page.match() die Pfadüberprüfung restriktiver machen:

if (url.pathname !== ('/' + this.path)) {
    return false;
}
Eselce commented 2 years ago

Ich hätte den Doppelpunkt am Ende von document.location einfach nicht erwartet und war überrascht...

rombau commented 2 years ago

Da es keine augenscheinlichen Nebenwirkungen gibt, und die Tests weiterhin durchgehen, habe ich mit https://github.com/rombau/osext2/commit/6bb96a0e7ba7edc1c6be205cfdb0782d8f89d374 die Pfadüberprüfung umgestellt.