Javascript: как я могу установить курсор во время операции перетаскивания на веб-сайте?

#javascript #html #css #drag-and-drop

#javascript #HTML #css #перетаскивание

Вопрос:

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

Как я могу изменить это поведение? Свойство CSS cursor, похоже, срабатывает только тогда, когда вы не удерживаете нажатой кнопку мыши.

PS: Поскольку я разрабатываю расширение для Google Chrome, другой браузер для меня не имеет значения.

Комментарии:

1. Вам нужно будет предоставить больше информации о том, что вы делаете и как вы это делаете. По моему опыту, свойство CSS cursor выглядит точно так же, независимо от состояния кнопки мыши.

2. @Sparky: По крайней мере, в Chrome, когда вы удерживаете нажатой основную кнопку мыши и «перетаскиваете», курсор превращается в «двутавровую балку». Я думаю, что @eWolf хочет переопределить это соглашение.

3. @Jeremy В этом-то и проблема.

Ответ №1:

Просто переопределите обработчик сообщений «dragstart», а также «selectstart»… Находясь в функции, отмените событие…

 <script type="text/ecmascript">
window.addEventListener("dragstart", function(fEventObject){ CancelEvent(fEventObject); } );
window.addEventListener("selectstart", function(fEventObject){ CancelEvent(fEventObject); } );

function CancelEvent(fEventObject) 
{
   if (fEventObject.preventDefault) fEventObject.preventDefault();
   if (fEventObject.cancel != null) fEventObject.cancel = true;
}

</script>
  

Комментарии:

1. Интересный ответ! Вы знаете, возможно ли также отменить событие после его запуска? Я бы хотел оставить перетаскивание и выделение на странице нетронутыми до тех пор, пока не будет активировано мое расширение, что происходит при удерживании мыши в течение половины секунды без движения.

Ответ №2:

Не могли бы вы добавить класс css к тегу body, который устанавливает курсор, а затем удалить этот класс при удалении?

Комментарии:

1. Рискованно. Если операция перетаскивания не пройдет должным образом (за пределами окна, ошибка или что-то еще), курсор просто останется там.