IE7 не полностью поддерживает javascript метод insertBefore?

У меня есть следующий код, который прекрасно работает в 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 ответа

Решение

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

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

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

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

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

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

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

подробности

Другие вопросы по тегам