尝试使用块将js代码插入moodle课程页面

问题描述 投票:0回答:1

我正在阻止 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);

解决了第一个问题,第二个问题依然存在

javascript php moodle
1个回答
0
投票

我做了解决这两个问题的方法,但有一段时间它做了两次

        $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);
© www.soinside.com 2019 - 2024. All rights reserved.