当 yepnope(默认捆绑在 Modernizr 中)用于@runs-at document-start的 GreaseMonkey 用户脚本时,整个用户脚本将失败,并出现错误“n 未定义”,这意味着“firstScript 未定义”的最大化。
实际上,它指的是以下行:
insBeforeObj = isGeckoLTE18 ? docElement : firstScript.parentNode,
当 yepnope(默认捆绑在 Modernizr 中)用于@runs-at document-start的 GreaseMonkey 用户脚本时,整个用户脚本将失败,并出现错误“n 未定义”,这意味着“firstScript 未定义”的最大化。
实际上,它指的是以下行:
insBeforeObj = isGeckoLTE18 ? docElement : firstScript.parentNode,
由于在 GreaseMonkey 文档开始时尚未加载 DOM,因此失败。
解决方法 1:不要将 yepnope 与 Modernizr 一起使用,这不是强制性的。
解决方法 2:在文档末尾运行 Modernizr/yepnope。这可能是您开始操作 DOM 的地方,不是吗?
document.addEventListener('DOMContentLoaded', _runAtDocumentEnd, false);
function _runAtDocumentEnd() {
/* insert Modernizr/Yepnope library here */
}
解决方法 3:在文档末尾运行。但是由于您明确希望在文档开始时运行它,这可能不是一个可接受的解决方法。