TypeError: can't access dead object

Message

TypeError: can't access dead object

Type d'erreur

Quel est le problĂšme ?

Afin d'amĂ©liorer l'utilisation de la mĂ©moire et de prĂ©venir les fuites mĂ©moire, Firefox empĂȘche les modules complĂ©mentaires de conserver des rĂ©fĂ©rences fortes vers les objets du DOM aprĂšs que leur document parent a Ă©tĂ© dĂ©truit. Un objet mort (dead) est un objet qui contient une rĂ©fĂ©rence forte vers un Ă©lĂ©ments du DOM, mĂȘme aprĂšs que celui-ci a Ă©tĂ© dĂ©truit dans le DOM. Pour Ă©viter ces problĂšmes, les rĂ©fĂ©rences aux objets du DOM d'un document Ă©tranger devraient ĂȘtre enregistrĂ©es dans un objet spĂ©cifique Ă  ce document et ĂȘtre nettoyĂ©es lors de la suppression du document. On peut Ă©galement utiliser les objets qui permettent d'enregistrer des rĂ©fĂ©rences faibles.

VĂ©rifier si un objet est mort

Components.utils fournit une mĂ©thode isDeadWrapper() qui peut ĂȘtre utilisĂ©e par du code privilĂ©giĂ© :

if (Components.utils.isDeadWrapper(window)) {
  // dead
}

Du code sans privilÚge ne pourra pas accéder à Component.utils et pourra simplement intercepter l'exception :

try {
  String(window);
}
catch (e) {
  console.log("window est problablement mort ");
}

Voir aussi