хром устанавливает курсор для отправки текстовых сообщений при перетаскивании, почему?

Мое приложение имеет много функций перетаскивания. При перетаскивании я хочу, чтобы курсор изменился на некоторый курсор захвата. Internet Explorer и Firefox хорошо работают для этого, но Chrome всегда изменяет курсор на текстовый курсор.

56
задан allanberry 14 August 2013 в 20:33
поделиться

2 ответа

У меня похожая проблема с использованием jQuery UI draggable and sortable (ver. 1.8.1), и она довольно специфична, поэтому я предполагаю, что вы используете ту же библиотеку.

Проблема вызвана ошибкой в jQuery UI (на самом деле это исправление другой ошибки Safari). Я только что поднял этот вопрос в jQuery UI http://dev.jqueryui.com/ticket/5678, так что, думаю, вам придется подождать, пока его исправят.

Я нашел обходной путь для этого, но он довольно сложный, так что используйте его только если вы действительно знаете, что происходит ;)

if ($.browser.safari) {
    $.ui.mouse.prototype.__mouseDown = $.ui.mouse.prototype._mouseDown;
    $.ui.mouse.prototype._mouseDown = function(event){
        event.preventDefault();
        return $.ui.mouse.prototype.__mouseDown.apply(this, arguments);
    }
}

Он просто отключает исправление, которое находится в коде jQuery UI, так что в основном он может сломать что-то.

2
ответ дан 26 November 2019 в 17:13
поделиться

Попробуйте отключить событие выделения текста.

document.onselectstart = function(){ return false; }

Это отключит любое выделение текста на странице и, кажется, браузер начнет показывать пользовательские курсоры.

Но помните, что выделение текста не будет работать вообще, поэтому лучше всего делать это только во время перетаскивания, и включать его снова сразу после этого. Просто прикрепите функцию, которая не возвращает false:

document.onselectstart = function(){ return true; }
22
ответ дан 26 November 2019 в 17:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: