Не устанавливается цвет через style
Какаето невероятная хрень творить в скрипте.
Решил переписать свой color picker. Проблема в том что когда перемещаю точку, то когда она сместилась на середину должен измениться цвет НЕ работает только в хроме и опере на вебките, даже в гребаном ИЕ работает.. picker.on('DotMove', function (coords) { if (coords.y > 150) { this.style.borderColor = 'white'; } else { this.style.borderColor = 'black'; } }); и в атрибуте style все меняется, но цвет остается тот же , если не убрать из стилей border: 1px solid black; и потом прописывать в обработчике события так picker.on('DotMove', function (coords) { if (coords.y > 150) { this.style.borderr = '1px solid white'; } else { this.style.border = '1px solid black'; } }); но это бред какой то так как стили заданные через style имеют преймущество перед стилями заданным через css рабочие демо тут Где я накосячил ? П.с в консоли показывает что установлен нужный цввет, и больше нигде внутри скрипта не меняется цвет. |
cyber,
если очень медленно перемещать то смена происходит. |
рони, у меня нет, да и всеравно такой вариант не радует...
|
Ну видимо глюк webkit. Не удивлен. В WebKit (blink) полно глюков. И обычно их никто не исправляют. Все работают над новыми фичами :)
|
danik.js, проблема в том что в старой версии программы с ужасным кодом все работает на ура..
|
cyber,
Прочти в консоли coords.y - может там формат не цифровой и нун перепарсить ? |
Deff, проверил как только увидел что не работает, да и если бы проблема была в этом условие не срабатывало бы, да и остальных браузерах не работалобы..
|
иногда цвет становится нужный если переключить на другую вкладку и обратно, но потом так и остается белый *faceplam*
|
cyber,
может обрабатывать не все перемещения а дискретно раз в 50ms или только up и dn |
рони, возможно в этом была бы проблема если бы по клику срабатывала смена цвета, а так и по клику не работает.
А тут все работает на ура, но код там просто ужасный.. |
И какие то непонятные подторможивания в хроме при перемещение, черт побери что они с хромом сделали...
|
up, не могу найти решение хелп
|
setTimeout() тебя спасет!
Вобще. возьми на заметку такой финт - довольно часто выручает. |
danik.js,
не спас, я его изначально использовал, только забыл вернуть перед тем как демо первый раз выложить |
Хром тридцатый на винде - работает (цвет меняется на середине)
<!DOCTYPE HTML> <html> <head> <link rel='stylesheet' type='text/css' href='http://ru.lookatcode.com/show/5083176863845438/default.css'> <script src="http://ru.lookatcode.com/show/5083176863845438/picker.js"></script> </head> <body> <div id='picker-contain' class='picker-contain'> </div> <script> var cont = document.getElementById('picker-contain'); var picker = new Picker(cont, { backColor: 'green', canvas: { picker: { width:300, height:300 }, tone: { width:30, height:300 }, dot: { width: 8, height:8 } } }); picker.on('changedColor', function(params) { //console.log(params.color); }); picker.on('DotMove', function (coords) { if (coords.y > 150) { setTimeout(function(){ this.style.borderColor = 'white'; }.bind(this), 0); } else { setTimeout(function(){ this.style.borderColor = 'black'; }.bind(this), 0); } }); </script> </body> </html> Кстати при скролле координаты смещаются. И в хроме каретка вместо стрелочки при перетаскивании (фиксится через preventDefault() по mousedown) |
danik.js, хм, я тебя не так понял я думал ты имел ввиду обернуть mousemove
function onMousemove(e) { setTimeout(function () { setCoords(e, canvas, offsetElem, shift); }, 5); }; и да , работает не совсем правильно так как не всегда цвет меняеться при резком движении.. |
Цитата:
|
Часовой пояс GMT +3, время: 13:14. |