Игнорирование / отмена перетаскивания в браузере для JavaScript drag & drop - PullRequest
1 голос
/ 31 августа 2009

Я реализую скрипт перетаскивания в (простой) JavaScript. Все хорошо, кроме одного. Например, в Firefox (возможно, не только там), если вы перетаскиваете объект во второй раз, он перетаскивается как встроенная функция браузера (например, я думаю, для простого перетаскивания изображения на рабочий стол) Ну, этот вид рушит мой сценарий.

Дело в том, что я знаю, что это возможно, и я даже делал это раньше, но это было очень долго, и я начал работать методом проб и ошибок, просто вошел в focus () и blur () по всему место ", пока он, казалось, на самом деле не потерял фокус.

Так что, если кто-то знает, как мне это объяснить, он станет моим личным героем. Размытие () на перетаскиваемый объект? фокус () на другой? и т.д.

Спасибо!

// Хорошо, части кода относительно этого будут:

...
    this.handle.onmousedown = function(e)
    {
        self.startDragging(e);
    };
    this.handle.onmouseup = function(e)
    {
        self.stopDragging(e);
    };
    setInterval(function(){self.animate()}, 25);
...
startDragging: function(e)
{
    this.dragging = true;
},
stopDragging: function(e)
{
    this.dragging = false;
},
animate: function()
{
    if(this.dragging)
...

1 Ответ

1 голос
/ 31 августа 2009

Если я неправильно истолковал ваш вопрос, попробуйте event.preventDefault (); в вашем слушателе событий mousedown. Было бы полезно, если бы вы могли предоставить фрагменты кода, чтобы показать нам, как вы реализуете перетаскивание.

Редактировать: С вашей реализацией, что-то вроде этого должно работать:

this.handle.onmousedown = function(e) {
    if(!e) e = window.event;
    if(e.preventDefault) e.preventDefault();
    else e.returnValue = false;

    self.startDragging(e);
};

Однако я бы рекомендовал вместо этого использовать прослушиватели событий.

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