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

在moodle中包含的.js文件中添加延迟属性,moodle,Moodle,我正在优化我的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))

我正在优化我的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库

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

请注意,标签应该是“
defer
”而不是“
defer='defer'
”,因为Moodle使用HTML5 doctype

此外,由于Moodle的建造方式,Moodle的装载顺序也很重要。添加defer属性可能会破坏您的Moodle