#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. Рискованно. Если операция перетаскивания не пройдет должным образом (за пределами окна, ошибка или что-то еще), курсор просто останется там.