2009-12-13 6 views
0

HI, J'essaie d'ajouter dynamiquement un formulaire à un onglet dans Ext-js. (l'onglet a déjà été rendu). fyi, j'utilise j'utilise Ext 2.2.ext js - erreurs el.ownerDocument.createRange() dans IE 8

l'erreur se produit lorsque, pendant la fonction tab.add: -à-dire:

function tabactivate(tab) {  
      var newItem= new Ext.FormPanel(.....);    
      **tab.add(newItem)**; //ERRORS HERE  
      tab.doLayout();    
} 

Je reçois cette erreur sur la ligne 247 de ext-all-debug.js qui est

range = el.ownerDocument.createRange(); 

l'erreur est (l'objet ne prend pas en charge cette propriété ou cette méthode.)

Cela fonctionne correctement dans Firefox mais se casse dans IE8. Est-ce que quelqu'un sait une solution de contournement pour cela?

Merci

Répondre

0

Cela semble très similaire à une question que j'avais avec ExtJS 2.2 et IE.

Il semble que beaucoup d'endroits dans le code poste que vous voyez le code comme ceci:

var td = document.createElement("td"); 
this.tr.insertBefore(td, this.tr.childNodes[index]); 

Lorsque, en fait, qui ne fonctionne pas sur IE parce que « this.tr.childNodes ([0]) "n'existe pas encore. Ma solution de contournement consistait à remplacer le prototype (dans mon cas, insertButton() dans Ext.Toolbar) pour vérifier l'existence de this.tr.childNodes ([0]), en utilisant une fonction différente ou en la créant si elle ne l'était pas. n'existe pas.

J'espère que je suis correct que c'est le problème que vous rencontrez.

+0

Merci Eric, parce que j'ai trouvé la solution, je n'ai pas essayé, mais j'apprécie la réponse :) – 29er

0

J'ai donc trouvé une vieille chaîne qui avait la solution pour moi. http://www.extjs.com/forum/showthread.php?t=7912&highlight=createRange

Essentiellement, quand je l'instanciation onglets vides, j'avais ma propriété html mis à ceci:

html: ' ',

une fois que je soit pris la propriété complètement ou je l'ai changé pour

html: '<span></span>' 

il a cessé de se briser.

Merci

0

IE (même 8) ne fonctionne pas avec la méthode document.createRange().

Vous pouvez essayer var supportsDOMRanges = document.implementation.hasFeature("Range", "2.0"); pour voir si un navigateur prend en charge les plages DOM selon la norme.