rombau / osext2

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

Fehler beim Einlesen der Ligatabelle #19

Closed Eselce closed 2 years ago

Eselce commented 2 years ago

Kurz nach dem Einloggen (Version 2.2.1):

16:06:19.240 TypeError: can't access property "replaceAll", headers[i] is undefined
    table moz-extension://b56a2607-1d0f-4e03-b73f-ac86c8a6122c/source/htmlutil.js:22
    table moz-extension://b56a2607-1d0f-4e03-b73f-ac86c8a6122c/source/htmlutil.js:21
    getTableByHeader moz-extension://b56a2607-1d0f-4e03-b73f-ac86c8a6122c/source/htmlutil.js:20
    getTableRowsByHeader moz-extension://b56a2607-1d0f-4e03-b73f-ac86c8a6122c/source/htmlutil.js:62
    extract moz-extension://b56a2607-1d0f-4e03-b73f-ac86c8a6122c/source/pages/leaguetable.js:19
    process moz-extension://b56a2607-1d0f-4e03-b73f-ac86c8a6122c/source/page.js:219
    updateExtensionData moz-extension://b56a2607-1d0f-4e03-b73f-ac86c8a6122c/source/persistence.js:93
[page.js:265:24](moz-extension://b56a2607-1d0f-4e03-b73f-ac86c8a6122c/source/page.js)

Offensichtlicher Grund ist, daß bei 11 Überschriften 0 - 10 der Index 11 erreicht wird:

    static getTableByHeader (doc, ...headers) {
        let table = Array.from(doc.getElementsByTagName('table')).find((table, t) => {
            return Array.from(table.rows[0].cells).every((cell, i) => {
                return cell.textContent === (headers[i].replaceAll('|', ''));
            });
        });

headers[11] ist undefined:

headers
Array(11) [ "#", "", "Club", "Spiele", "Si.", "Un.", "Ni.", "Tore+", "Tore-", "Tore +/-", … ]
​0: "#"
​1: ""
​2: "Club"
​3: "Spiele"
​4: "Si."
​5: "Un."
​6: "Ni."
​7: "Tore+"
​8: "Tore-"
​9: "Tore +/-"
​10: "Punkte"
​length: 11
​<prototype>: Array []

Ich habe übrigens nicht ganz verstanden, warum noch über die Legende iteriert wird. Die Tabelle selbst ist adressierbar über table#kader1.

Eselce commented 2 years ago

Hier ist die Erklärung: Betafunktion Performance:

Array.from(table.rows[0].cells).map(cell=>cell.textContent).join(' | ')
"# |  | Club | Spiele | Si. | Un. | Ni. | Tore+ | Tore- | Tore +/- | Punkte | Performance"
rombau commented 2 years ago

Behoben mit https://github.com/rombau/osext2/commit/da4d5d135e99539c175feb330ffb6e5cb68bbc05

Einfach die Prüfung der Spalten umgedreht: es müssen jetzt zumindest die erwarteten Spalten (in der Reihenfolge) da sein, aber es können auch mehr sein, wodurch die Jugendseite mit GM-Script auch keinen Fehler mehr wirft.