我正在阻止 moodle 课程,其目的之一是显示学生看到活动的次数
我做了但是有两个问题,
第一个:如果课程由一个页面上的每个部分组成,这个js代码只在一个页面上工作,不知道为什么?
第二个:当使用“tiles course format”并启用 javascript 导航时,此代码无法正常工作
此代码在函数内
get_required_javascript()
$code = 'document.getElementById("module-'.$cmid.'")
.insertAdjacentHTML("beforeend", "' . addslashes_js($blockdata->viewstemplate) . '");';
$this->page->requires->js_amd_inline ($code);
// $this->page->requires->js_init_code($code , true);
我确实尝试了
js_amd_inline
和js_init_code
这两个功能
编辑
我把密码改成
$code = 'require(["jquery", "core/ajax"], function($, ajax) {
$(document).ready(function() {
var module = $("#module-'.$cmid.'");
module.append("'.addslashes_js($blockdata->viewstemplate).'");
});
});';
$this->page->requires->js_init_code($code , true);
解决了第一个问题,第二个问题依然存在
我做了解决这两个问题的方法,但有一段时间它做了两次
$code = 'require(["jquery", "core/ajax"], function($, ajax) {
$(document).ready(function() {
var module = $("#module-'.$cmid.'");
module.append("'.addslashes_js($blockdata->viewstemplate).'");
});
$(document).ajaxComplete(function(event, xhr, settings) {
if (typeof (settings.data) !== \'undefined\') {
var data = JSON.parse(settings.data);
if (data.length > 0 && typeof (data[0].methodname) !== \'undefined\') {
if (data[0].methodname == \'format_tiles_get_single_section_page_html\' // Tile load.
|| data[0].methodname == \'format_tiles_log_tile_click\') { // Tile load, cached.
$(document).ready(function() {
var module = $("#module-'.$cmid.'");
module.append("'.addslashes_js($blockdata->viewstemplate).'");
});
}
}
}
});
});';
$this->page->requires->js_init_code($code);