在moodle中包含的.js文件中添加defer属性



我正在优化Moodle网站的性能,它显示了加载页面.js文件的高加载时间。这就是为什么我想在调用或包含javascript文件的页面中包含defer='defer'属性,如下所示。

if (!empty($CFG->cachejs) and !empty($CFG->jsrev) and $CFG->jsrev > 0 and substr($url, -3) === '.js') {
    if (empty($CFG->slasharguments)) {
        return new moodle_url($CFG->httpswwwroot.'/lib/javascript.php', array('rev'=>$CFG->jsrev, 'jsfile'=>$url));
    } else {
        $returnurl = new moodle_url($CFG->httpswwwroot.'/lib/javascript.php');
        $returnurl->set_slashargument('/'.$CFG->jsrev.$url);
        return $returnurl;
    }
} else {
    return new moodle_url($CFG->httpswwwroot.$url);
}

那么,我如何在上面添加defer='defer'属性呢?请推荐我。

在Moodle页面中有多个位置嵌入了javascript,其中最大的一个位置是YUI3库。

要添加defer标记,请查看文件/lib/outputrequirementslib.php。确切的行号取决于您的Moodle版本。最棘手的是将它添加到static.js中,因为这是在html_writer类中处理的。

请注意,标记应该是"defer",而不是"defer='defer'",因为Moodle使用HTML5 doctype。

Moodle的加载顺序也很重要,因为他们构建Moodle的方式。添加defer属性可能会破坏Moodle。

最新更新