使用config-all.json生成的modernizr.js中的错误

问题描述 投票:1回答:1

我有一个无法解决的问题:

  • 我通过npm install和package.json安装了最新版本的modernizr(3.7.1)]

  • [根据文档建议,使用以下命令./bin/modernizr -c config-all.json生成了modernizr.js文件

  • 现在我的页面中包含我的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的良好表现,但我仍然不知道它为什么会发生。

有关更多详细信息,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;
  });

我有一个我无法弄清的问题:我使用npm install和package.json安装了最新版本的modernizr(3.7.1),我使用以下命令./bin/生成了modernizr.js文件。 ..

javascript npm modernizr
1个回答
1
投票

我在页面的主体elemtn的末尾包含了modernizr.js(在任何其他脚本之前),并且不再发生该错误,因为Modernizr不使用伪造的主体来运行他的测试。

© www.soinside.com 2019 - 2024. All rights reserved.