Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Mutation observer for "onChange" event is re-enabled to early when loading large document

Aperta
#2,867 2 commenti 0 reazioni 0 assegnatari Vedi su GitHub

@frankwalter-1 ci sta già lavorando.

Dal 31/12/2024.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
35/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Ferma
Stack tecnologico
typescript
Ambito
frontend

Direzione di ricerca

Inizia dal percorso asincrono di render() e dal ciclo di vita di MutationObserver, in particolare isMutationBelongsToElement(), e riproduci il problema con un documento di grandi dimensioni eseguendo il profiling in Chrome. Il lavoro è completato quando l’observer rimane inattivo fino al completamento del rendering, senza le chiamate ripetute e il carico della CPU descritti.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

bug important

When replacing the editor contents by calling "render()" the MutationObserver that detects changes should be deactivated and reactivated after the new content has been rendered. It seems the async render() method just uses a 2000ms timer, so when a document takes longer to render the MutationObserver is re-enabled too early and there are hundreds of calls to "isMutationBelongsToElement()" that bay continue multiple seconds and creating 100% cpu load.

Steps to reproduce:

  1. load a document using render()
  2. load another very lange document using render()
  3. look at the Chrome performance monitor or record a performance profile and look at the many calls.

Expected behavior:
when rendering a new document the Editor makes sure that the new content has been fully rendered before re-activating the MutationObserver.

Editor.js version:
2.30.6

Plugins you use with their versions:
not relevant

Lingua principale
TypeScript
Stelle
32k
Fork
2.2k
Merge medio
2g 1h
PR unite (30g)
1

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di codex-team/editor.js

Tutte le issue di codex-team/editor.js

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.