Я работал с 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 он работает 9 раз на 10 во всех браузерах (chrome, firefox ...)
Я тестировал его на другой машине на Ubuntu, и он действительно работал не часто со всемибраузеры. И я также проверил это на виртуальной машине в Linux, и это похоже на localhost. Когда я получаю к нему доступ с компьютера на Windows 10, он работает 9 раз на 10, а на компьютере на Ubuntu - очень редко.
Когда он не работает, у меня появляется эта ошибка: Uncaught Error: Mismatched anonymous define() module: function(u){var e=function...
из require.min.js и после этого: createexam.js:98 Uncaught TypeError: $(...).select2 is not a function
из моего файла javascript.
Я также пытался загрузить библиотеку другим способом, предоставляемым Moodle, например $this->page->requires->js(...)
или без функции $.getScript
. Но каждый раз он работает реже, чем сейчас.
Итак, у вас есть идея, почему она не работает каждый раз на всех машинах? Или загрузить библиотеку не лучшим образом?