有时select2在mudele插件中不起作用/未加载
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有时select2在mudele插件中不起作用/未加载相关的知识,希望对你有一定的参考价值。
我与moodle合作,并在其中创建了一个插件。在这一本书中,我使用了库select2。
在插件的view.php文件中,我具有:
foreach((array) $jsFiles as $path) {
$PAGE->requires->js(new moodle_url($CFG->wwwroot . '/mod/exam/subplugins/'.$path));
}
?>
<!DOCTYPE html>
<!-- Essential to activate bootstrap -->
<html>
<head>
<link rel="stylesheet" type="text/css"
href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script
src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link href="select2/select2.min.css" rel="stylesheet" />
<script src="select2/select2.full.js"></script>
<link href="select2/chart.min.css" rel="stylesheet" />
<script src="select2/chart.min.js"></script>
<title></title>
</head>
<?php
?>
</html>
<?php
echo $OUTPUT->footer();
所以,我在这里加载库。我在javascript文件中使用它:
$(document).ready(function() {
var script = $.getScript("../../mod/exam/select2/select2.min.js");
init();
});
第一次,我只是在ready函数中加载了脚本,但是现在我也在init函数中加载了脚本,这样做可以使它更频繁地工作。而且我还有一个按钮来添加一个select2字段。并且我在脚本的顶部加载了$.getScript
函数,以使其更频繁地工作。如果在大多数情况下单击按钮时都没有执行此操作,则该按钮将不起作用,并且我会显示以下内容:
在Windows 10的本地计算机上,它在所有浏览器(chrome,firefox ...)上都能在10上工作9次。
我在ubuntu的另一台机器上对其进行了测试,但实际上并非所有浏览器都能正常运行。我也在Linux上的虚拟机上对其进行了测试,就像在localhost中一样。当我从Windows 10上的计算机访问它时,它在10上可运行9次,而在ubuntu上的计算机上则很少运行。
[当它不起作用时,我出现此错误:require.min.js中出现Uncaught Error: Mismatched anonymous define() module: function(u){var e=function...
,此后,我的JavaScript文件中出现了这一错误:createexam.js:98 Uncaught TypeError: $(...).select2 is not a function
。
[我也试图以诸如$this->page->requires->js(...)
或没有$.getScript
函数的方式提供的其他方式加载库。但是每次,它的工作频率都比现在少。
所以,您有一个主意,为什么它每次都不在所有机器上都起作用?还是我加载库的方式不好?
我与moodle合作,并在其中创建了一个插件。在这一节中,我使用了库select2。在我的插件的view.php文件中,我有:foreach((array)$ jsFiles as $ path){$ PAGE-> requires-&...
我从未与Moodle合作,但与RequireJS合作。您的站点使用RequireJS
,并且select2
支持RequireJS
。因此,您必须通过RequireJS
加载它。否则,当首先加载RequireJS
时,它将不起作用-因此不时:)
以上是关于有时select2在mudele插件中不起作用/未加载的主要内容,如果未能解决你的问题,请参考以下文章