IE7 не полностью поддерживает javascript метод insertBefore? - PullRequest
5 голосов
/ 02 марта 2011

У меня есть следующий код, который отлично работает в Chrome, IE8 и FF.Тем не менее, я получаю сообщение об ошибке при тестировании с IE7.Кто-нибудь знает, что здесь происходит?

 function do_replace(s, p1,p2,p3,child_node,syn_text) {
       reg = new RegExp('[h\|H][1-7]');
   if(p1.length>0){   //this might not be necessary
     //create textnode
      var text_node = document.createTextNode(p1);
          child_node.parentNode.insertBefore(text_node,child_node);  //errors out here in IE7
       }

Ошибки кода в последней строке - IE7 выдает «htmlfile: Неверный аргумент».ошибка, когда я смотрю на код через отладчик.child_node, parentNode и text_node выглядят идентичными Firefox и Chrome при запуске этого скрипта.

Есть идеи?Или IE7 просто не поддерживает этот метод, как и другие браузеры?

Спасибо

Ответы [ 2 ]

4 голосов
/ 07 марта 2011

Вместо того, чтобы оставить эту проблему нерешенной, я выяснил, что не так с моим кодом:

Я использовал обширный набор фреймов (чёрт !!) и когда я сделал вызов text_node = document.createTextNode(), я не былделать это во фрейме, в котором находилось мое приложение.

Я исправил это, явно вызвав фрейм для создания объекта в:

var text_node = MainFrame.child_frame.WhySoManyFrames.document.createTextNode(p1);

После этого метод insertBeforeработает отлично!

Надеюсь, это поможет любому, кто смотрит на этот вопрос - я знаю, что мне потребовалось много времени и много разочарований, чтобы разобраться!

1 голос
/ 02 марта 2011

Функция JavaScript «InsertBefore» поддерживается IE7.Помните, что вы должны использовать эту функцию, только когда страница полностью загружена !

Подробности

...