Управление плагином извне
13 февраля 2017 23:37
Извиняюсь за вопрос, который наверняка обсуждался, но мне не удалось найти на форуме ответа.
Задача менять цвет текстуры кнопками, которые "живут" на главное странице.
Я сделал так:
В главной странице объявил кнопку:
<input id="btn" type="button" onclick="SetColor('#000000')"/>
В скрипте сделал такую функцию:
var MainColor = "#000000";
function SetColor(NewColor){
MainColor = NewColor;
canvas_cont.dispatchEvent(new CustomEvent("ChangeColor"));
}
При загрузке плагина объявляю:
canvas_cont.addEventListener("ChangeColor", ChangeColor, false);
Все работает отлично, кроме InternetExplorera.
Он выдает ошибку на строчку canvas_cont.dispatchEvent(new CustomEvent("ChangeColor"));
Команда не поддерживается объектом.
В связи с этим вопросы:
- правильный ли вообще подход я применил для управления плагином извне?
- если да, то как победить IE?
Заранее спасибо за помощь.
Задача менять цвет текстуры кнопками, которые "живут" на главное странице.
Я сделал так:
В главной странице объявил кнопку:
<input id="btn" type="button" onclick="SetColor('#000000')"/>
В скрипте сделал такую функцию:
var MainColor = "#000000";
function SetColor(NewColor){
MainColor = NewColor;
canvas_cont.dispatchEvent(new CustomEvent("ChangeColor"));
}
При загрузке плагина объявляю:
canvas_cont.addEventListener("ChangeColor", ChangeColor, false);
Все работает отлично, кроме InternetExplorera.
Он выдает ошибку на строчку canvas_cont.dispatchEvent(new CustomEvent("ChangeColor"));
Команда не поддерживается объектом.
В связи с этим вопросы:
- правильный ли вообще подход я применил для управления плагином извне?
- если да, то как победить IE?
Заранее спасибо за помощь.
14 февраля 2017 10:32
Все работает отлично, кроме InternetExplorera.В IE нужно использовать:
var event = document.createEvent("CustomEvent");
event.initCustomEvent("ChangeColor", false, false, null);
Пример можно посмотреть в движке - файл assets.js.
правильный ли вообще подход я применил для управления плагином извне?О разработке приложений можно почитать в документации.
18 февраля 2017 14:19
- правильный ли вообще подход я применил для управления плагином извне?вообще более стандартный подход будет таким:
в html та же кнопка:
<input id="btn" type="button">
а в скрипте навешиваем обрабтчик на её нажатие:
var MainColor = "#000000";
var btn = document.getElementById("btn");
btn.addEventListener("click", function(event) {
var new_color = "#000000";
MainColor = new_color;
ChangeColor(new_color);
});
а если нужно несколько кнопок + иметь четкое соответствие: кнопка-цвет, то можно либо все это вручную задать в скрипте в виде массива, либо воспользоваться стандартным свойством dataset (data-имя_атрибута) и задавать это прямо в html:
<input type="button" class="color_button" data-color="#000000">
<input type="button" class="color_button" data-color="#121212">
<input type="button" class="color_button" data-color="#345678">
потом в скрипте навесить обработчик на событие click по кнопкам:
// выбираем все нужные кнопки на странице
var buttons = document.getElementsByClassName("color_button");
for (var i = 0; i < buttons.length; i++) {
var btn = buttons[i];
// навешиваем обработчик события click на каждую кнопку
btn.addEventListener("click", function(event) {
var color = event.target.getAttribute("data-color");
ChangeColor(color);
});
}