внедрение внешнего javascript-файла не работает в chrome - PullRequest
0 голосов
/ 13 июля 2011

Мне дали эту функцию для вставки внешних файлов javascript в рендеринг html:

function inject(src, cb, target){
  target = target || document.body;
  var s = document.createElement('SCRIPT');
  s.charset = 'UTF-8';

  if(typeof cb === 'function'){
    s.onload = function(){
      cb(s);
    };
    s.onreadystatechange = function () {
      (/loaded|complete/).test(s.readyState) && cb(s);
    };
  }

  s.src = src;
  target.appendChild(s);
  return s;
}

и это вызывающая функция:

$(function (){
  inject(swifttagurlftlpre43sc,function(script){
    var a = swifttagdiv.firstChild.attributes[2].value.substr(11);
    var is = swifttagdiv.firstChild.firstChild.src;
    var onLine = (is.substring(is.lastIndexOf('/') + 1) == 'staffonline.png');

    if (onLine) {
      $('#spanactive2').html('<span style="color: #567591;"><?php echo($content->getString('active')); ?><\/span>');
      $('#chaton2').html('<img src="/site/img/chaton.gif" alt="" />');
      $('#chat_box_timer').click(function() { eval(a); });
    } else {
      $('#live_chat_block_timer').remove();
      $('#chaton2').html('<img src="/site/img/chatoff.png" alt="" />');
    }
  });
});

И он отлично работает на Firefox. Это не работает на Chrome, хотя. Инструменты разработчика дают мне эту ошибку: Uncaught TypeError: Невозможно вызвать метод 'appendChild' с нулевым значением

Как мне исправить или хотя бы начать отлаживать это?

Ответы [ 2 ]

0 голосов
/ 16 августа 2011

Моим лучшим предположением было то, что DOM генерировался по-разному в разных браузерах, и swifttagdiv.firstChild не имел атрибутов [2] в chrome, но имел в других браузерах.У него было свойство attribute ['href'].Таким образом, решение было изменить

var a = swifttagdiv.firstChild.attributes[2].value.substr(11);

на

var a = swifttagdiv.firstChild.attributes['href'].value.substr(11);

0 голосов
/ 13 июля 2011

У меня были проблемы с попыткой получить правильный доступ к телу до завершения загрузки (я думал, что это проблема IE, но она может быть более распространенной).Может ли это быть?

...