Вопросы по Quest Navigator
Здесь задаём любые вопросы по плееру Quest Navigator.
Видимо, ошибка в яваскрипте. Нужно смотреть, какой яваскрипт используется в игре, искать ошибку там.
Возникла задача, которую я не могу решить. Я не могу вызвать функцию JavaScript через оператор EXEC, когда перехожу на локацию, на которой записан вызов этой функции. Пример: у меня есть простенькая функция для JavaSript, которая прячет элемент с заданным ей ID:
Spoiler
function hideElement(elementId) {
if (document.getElementById(elementId)) {
var obj = document.getElementById(elementId);
if (obj.style.display != "none") {
obj.style.display = "none";
}
}
}
Расмотрим всё на примере прогрессбара. Если в файле QSP прописать эти строчки:
'<progress id="progressbar" value="50" max="100"></progress>'
EXEC('JS:hideElement("progressbar");')
то никакого скрытия не будет вообще. Брогрессбар так и останется на экране.
Но если написать такой код:
'<progress id="progressbar" value="50" max="100"></progress>'
'<a onclick="hideElement(''progressbar'')">Кнопка</a>'
то при нажатии на ссылку прогрессбар исчезает как и было задумано. Но почему он не исчезает в предыдущем варианте? Хотя если прописать вызов обычного Alert через оператор EXEC, то всё отлично работает:
EXEC('JS:alert("AAA!!!");')
Скажите чего я не понимаю и почему нет скрытия элемента страницы(прогрессбара) в первом случаи?
Storm,
возможно при попытке выполнить код через exec страница ещё не свёрстана. Не пробовал запустить тот же код через counter создав задержку или из действия?
Aleks Versus, я тоже подумал о том, что страница не готова в тот момент, когда выполняется функция. Тогда как правильно вызвать функцию? Из действия ACT будет тот же самый вариант, что с ссылкой. Тут вопрос немного в другом. Допустим, у нас есть страница с какими-то элементами на ней(прогрессбар тоже находится на ней); на этой же странице есть ссылка, которая выполняет другую локацию как функцию, пример такой локации:
a=1
b=2
![Ещё какой-то код]
EXEC('JS:hideElement("progressbar");')
При выполнении этой локации как функции переменные “a” и “b” приобретут свои значения. Но строчка
EXEC('JS:hideElement("progressbar");')
просто не выполниться. Вопрос: как сделать так, чтобы выполнилась?)
Задачка решена добавлением такой строчки:
'<script>window.onload=hideElement("progressbar");</script>'
После добавления скрипта на то, чтобы функция выполнилась после загрузки всей страницы всё заработало. Не уверен, что это самый оптимальный способ, но пока буду пользоваться им.
Может кто знает более лучший? =)
Storm,
в принципе можно было скрыть элемент через css. А уже потом, когда нужно, открывать с помощью функции.
Aleks Versus, задача стояла совершенно не в том, чтобы скрыть элемент. Нужно было активировать функцию JavaScript так, чтобы она работала. Функцию с сокрытием элемента я брал лишь для примера.
Storm,
onload - всё правильно, это самый адекватный способ.
Можно ещё на “document ready” повесить: https://learn.jquery.com/using-jquery-core/document-ready/
Здравствуйте, форумчане. Скажите, кто-то проверял поворот элементов с помощью CSS? Я добавляю в класс элемента такую строчку:
transform: rotate(45deg);
Но элемент отказывается поворачиваться. Это свойство не поддерживается Навигатором?
Upd: А вот так работает:
-webkit-transform: rotate(45deg);
Найден глюк в Навигаторе с отображением прогрессбара. Создайте новый QSP-файл, создайте локацию “Start”, на которой напишите код:
USEHTML=1
'<progress value=5 max=7></progress>'
ACT'Кнопка':gs 'Start'
Сохраните и запустите через Навигатор. После нажатие на действие “Кнопка” прогрессбар исчезает, хотя такого не должно происходить.
Storm,
зачем делать GS на текущую локацию?
Nex, к примеру если произошла какая-то математическая операция и нужно обновить данные, которые выводятся на экран. Этот код показан лишь для примера, чтобы не переписывать сюда кучу лишнего кода, который не относиться к этому вопросу.
Storm,
чтобы обновить локацию, я всегда использую GOTO. И в учебнике в примерах тоже везде GOTO.
Попробуй поменять, может так заработает.
Nex,
а если так?
USEHTML=1
'<progress value=5 max=7></progress>'
ACT'Кнопка': *pl 'Дописываем текст'
шутка в том, что пропадает описание.
Nex, увы, даже через GOTO пропадает.