Я очень стараюсь понять, как получить оповещение JS, чтобы появиться только после того, как завершился предыдущий скрипт (скрипт замены словаря слов). Получение этого javascript/jquery для запуска в порядке, дает мне головную боль, поскольку он либо заканчивается из строя, либо вторая часть не запускается вообще.
Вот код, который в настоящее время работает БЕЗ предупреждения:
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
<script src="jquery.zglossary.min.js" type="text/javascript"></script>
<script>
$(document).ready(function () {
$('body').glossary('listofwords.json');
//want alert('finished') to happen after glossary word replacement is finished replacing words here
});
</script>
</head>
Я пробовал много разных вещей, пытаясь получить предупреждение о том, где этот комментарий, и либо предупреждение происходит непосредственно перед заменой любых слов на скрипт zglossary, примером чего будет:
<script>
$(document).ready(function () {
$('body').glossary('listofwords.json');
alert('finished');
});
</script>
Или скрипт заменит все слова, и никаких предупреждений не произойдет вообще. Примером этого может быть:
<script>
$(document).ready(function () {
$('body').glossary('listofwords.json');
}, function() {
alert('finished');
});
</script>
Другой пример этого события (слова заменяются, но никаких предупреждений не происходит), которые я пробовал:
<script>
$(document).ready(function () {
$('body').glossary('listofwords.json', function() {alert('finished');} );
});
</script>
Я просто не могу понять это. Буду признателен за любую помощь
Я никогда раньше не использовал этот плагин для глоссария, но я загрузил источник, и я вижу, что проблема очевидна, потому что плагин глоссария не обеспечивает обратного вызова после того, как данные JSON загружаются асинхронно. Любое решение, которое не является хаки, потребует небольшой модификации самой библиотеки.
Вот быстрый способ сделать это
Добавив эту строку
typeof options.callback == 'function' && options.callback();
В конце success: function(data) {
Тогда ваш код будет просто следующим:
<script>
$(document).ready(function () {
$('body').glossary('listofwords.json', {callback:function() {alert('finished');}} );
});
</script>
Что похоже на ваш последний пример, только он переводит обратный вызов в параметры JSON, который ожидает плагин.
Я понятия не имею, что такое "Глоссарий", но вы можете найти решение с объектом "Отсрочка", предоставленным jQuery api. Отложенное помогает обрабатывать вызовы json, особенно метод.done() для установки caalback, когда вызов завершен.