[test](javascript:alert(1)) — the scheme gets stripped from the URL. The link still renders, just neutered.JaVaScRiPt dies exactly like javascript).data:text/html,... passes this filter — but the browser refuses top-level navigation to data: URIs. Dead end, exactly like the lesson.[click](https://example.org" ) — look at the emitted <a href=...>. Your quote lands inside the attribute unescaped.onerror.The lesson's finale — image source smuggling with a comment-out:
//)
Link version (hover instead of error):
[hover me](https://example.org" onmouseover=alert(1))
The filter only deletes the word "javascript" — it never escapes quotes. Your " escapes the src value, the handler takes over, and the trailing // comments out the stray closing quote so the JS stays valid. Load semantics: onerror fires because the image fails to load — give it a source that 404s (any bogus path works).