Ошибка в сгенерированном modernizr.js с config-all.json - PullRequest
1 голос
/ 10 октября 2019

У меня есть проблема, которую я не могу понять:

  • Я установил последнюю версию modernizr (3.7.1) с установкой npm и package.json

  • Я сгенерировал файл modernizr.js с помощью следующей команды ./bin/modernizr -c config-all.json в соответствии с документацией

  • Теперь, когда мой файл modernizr включен в мои страницы, я получаю эту ошибку в консоли JavaScript:

modernizr.js:6870
Uncaught TypeError: Cannot read property 'removeChild' of null
    at Object.fn (modernizr.js:6870)
    at testRunner (modernizr.js:144)
    at modernizr.js:10156
    at modernizr.js:10175

Я не знаю, блокирует ли это поведение модернизатора, но я не могу понять, почему

Для более подробной информации, функция в modernizr.js, где это происходит, это:

Modernizr.addTest('localizednumber', function() {
    /* this extends our testing of input[type=number], so bomb out if that's missing */
    if (!Modernizr.inputtypes.number) { return false; }
    /* we rely on checkValidity later, so bomb out early if we don't have it */
    if (!Modernizr.formvalidation) { return false; }

    var body = getBody();
    var div = createElement('div');
    var firstChild = body.firstElementChild || body.firstChild;
    var result;

    body.insertBefore(div, firstChild);

    div.innerHTML = '<input type="number" value="1.0" step="0.1"/>';
    var input = div.childNodes[0];
    body.appendChild(div);

    input.focus();
    try {
      document.execCommand('SelectAll', false); // Overwrite current input value, rather than appending text
      document.execCommand('InsertText', false, '1,1');
    } catch (e) {} // prevent warnings in IE

    /* results */
    result = input.type === 'number' && input.valueAsNumber === 1.1 && input.checkValidity();

    /* cleanup */
    body.removeChild(div);
    if (body.fake) {
      body.parentNode.removeChild(body); // <==== ERROR HAPPENS HERE
    }

    return result;
  });

1 Ответ

1 голос
/ 14 октября 2019

Я включил modernizr.js в конце моего тела elemtn на своих страницах (перед любым другим сценарием), и ошибка больше не возникает, потому что Modernizr не использует поддельное тело для запуска своих тестов.

Но я подумал, что включать туда Модернизр было бы плохой практикой, поэтому я включил файл в конце моего заголовка, во-первых, какое-нибудь объяснение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...