Как избежать эффекта мерцания с помощью перетаскивания JavaScript - PullRequest
1 голос
/ 19 марта 2009

Я использую следующий javascript (с jQuery) для обработки перетаскивания в сценарий, который я пишу:

jsc.ui.dragging = false;
jsc.ui.drag_element = {};
$(".drag-target").mousedown(function() {
    jsc.ui.drag_element =  $(this);
    jsc.ui.dragging = true;
});
$("html").mousemove(function(e) {
    if(jsc.ui.dragging) {
        jsc.ui.drag_element.css({"position": "absolute", "top": e.clientY - 1, "left": e.clientX - 1, "z-index": "100"}); // - 1s are due to IE not leaving go otherwise
        $("#overlay").show(); // Overlay stops text beneath being selected. TODO Stop current elements text being selected.
    }
});
$(".drag-target").mouseup(function() {
    if(jsc.ui.dragging) {
        jsc.ui.dragging = false;
        jsc.ui.drag_element.css("z-index", "98");
        $("#overlay").hide();
    }
});

Однако, когда объект перетаскивается, текст внутри него имеет мерцающее выделение, т.е. он включается и выключается при перемещении элемента. Есть ли способ предотвратить это или скрыть его эффект?

Ответы [ 2 ]

1 голос
/ 19 марта 2009

Есть ли причина не использовать jQuery UI Draggable ? Ваш код будет выглядеть так:

$(".drag-target").draggable();

Вы должны хотя бы проверить, как он собран, это может помочь вам решить проблему мерцания.

0 голосов
/ 19 марта 2009

Я думаю, что степень эффекта зависит от вашего оборудования и видео драйвера. Чтобы полностью этого избежать, вы можете просто нарисовать прямоугольник и затем перерисовать окно, когда кнопка мыши отпущена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...