e3rd / fb-getridad

1 stars 3 forks source link

Error: Cannot read properties of undefined #25

Closed kaha0 closed 10 months ago

kaha0 commented 10 months ago

fb-getridad allowed a sponsored post through. Upon closer inspection I found the cause is that is_garbage at some point gets called with undefined as parameter, tries to access its property parents and as a result exits with an error.

post: html.txt

error location: undefined

e3rd commented 10 months ago

Hustý! Je pro tebe jakžtakž snadný si to oddebuggovat? Kdyby ti to mělo dát hodně práce, vydám to jako verzi.

Pod řádek const $n = $(n) dej tenhle kód

    if($n === undefined) {
        console.error("$n is undefined", n, $)
        console.trace()
    }

a uvidíme, až se to semele. Protože nevěřim, že n je undefined, to by to chcíplo už i na n.tagName. Zajímá mě hodnota n, pro které selže jQuery varianta.

kaha0 commented 10 months ago

Lokálně jsem si to upravil, když se zase obejví tak dám vědět. Ale zatim se to stalo pouze v tomhle jednom případě.

Zkoušel jsem to debugovat na tom postu kterej jsem si lokálně uložil, ale moc jsem nezjistil. Vyhodilo to tuhle chybu už na tagName, ale před ní to nevypsalo nic (jen spoustukrát jQuery verzi, kterou jsem tam přidal pro debugovací účely, ale nic jinýho)

e2

kaha0 commented 10 months ago

Jo aha, když n je null tak se nechytí na n === undefined. Napadá mě: v prvním screenshotu n.tagName prošlo, ale $n.parents spadlo. Nemůže dojít k tomu, že se to $n nenastaví správně, třeba v nějakym krajním případě jako když n je null nebo undefined?

e

kaha0 commented 10 months ago

is_garbage se volá s parametrem null tady: e

Ten element USE na tomto místě vypadá takhle (což je divný, ne?): e2

Každopádně když na začátek is_garbage přidam podmínku if (n === null) return false tak pro celej post vrátí taky false...

kaha0 commented 10 months ago

Jo počkat, teď jsem si vzpomněl, to je ten svg element kterej fb skrývá pomocí shadowrootu, a to funguje jenom ve Firefoxu... a já jsem to měl otevřený v Opeře. Už zpětně nezjistim, jestli by to ve Firefoxu fungovalo, ale pokud se to znova neobjeví tak bych to bral jako že všechno ok. Pardon za mystifikaci :D

e3rd commented 10 months ago

Aha, takže dobrý, zatim zavírám? Jenom jsem to tak projel. Jo, javascriptový undefined a null jsou lahůdky. Rád se tomu budu kdyžtak věnovat, až na to narazíš.

kaha0 commented 10 months ago

Jo jo, zavírám, díky :)