使用 config-all.json 生成 modernizr.js 时出错
Error in generated modernizr.js with config-all.json
我有一个无法解决的问题:
我使用 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;
});
我在页面的正文末尾添加了 modernizr.js(在任何其他脚本之前)并且错误不再发生,因为 Modernizr 不使用假正文来 运行 他的测试。
但我认为在其中包含 Modernizr 是不好的做法,这就是为什么我首先将文件包含在 head 标记的末尾,有任何解释吗?
我有一个无法解决的问题:
我使用 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;
});
我在页面的正文末尾添加了 modernizr.js(在任何其他脚本之前)并且错误不再发生,因为 Modernizr 不使用假正文来 运行 他的测试。
但我认为在其中包含 Modernizr 是不好的做法,这就是为什么我首先将文件包含在 head 标记的末尾,有任何解释吗?