jQuery Установить положение мыши (не положение курсора)

У меня есть ссылка, по которой при нажатии я хотел бы, чтобы она перемещала положение мыши вправо (или в любом месте в окне просмотра, если уж на то пошло).

в коде это, вероятно, будет выглядеть примерно так:

$('a#expand').click(function(e){
    $(document)
       .mouseXPos(e.pageX + 50)
       .mouseYPos(e.pageY + 50);
});

Конечно, цепочка может не понадобиться, но аналогичная функциональность «установить положение мыши» - это то, что мне нужно.

Я видел решения для перемещения позиции курсора в определенное место в тексте, но я мало что из них почерпнул.


person Michael    schedule 30.07.2009    source источник
comment
Звучит так, будто это действительно раздражает пользователей! Я надеюсь, что у вас есть веская причина для этого, а не то, что это возможно.   -  person ScottE    schedule 30.07.2009
comment
Я должен объяснить дальше. Я использую отличный плагин Брайана hoverIntent для jQuery вместе с меню, которое включает в себя связанную вкладку, которая расширяет меню. Я анимирую выдвижение, но hoverIntent пропускает зависание, если мышь остается неподвижной во время анимации меню. Звучит странно, но этот плагин улавливает все остальные классические осечки ввода/вывода мыши, с которыми обычно сталкиваются разработчики. Он знает об этой проблеме и работает над ней для следующего выпуска. Было бы здорово иметь возможность каким-то образом переместить мышь на один пиксель. Либо решение на стороне клиента, либо решение на стороне сервера было бы потрясающим.   -  person Michael    schedule 03.08.2009
comment
хотя на первый взгляд это звучит так, как будто это раздражает пользователей, позвольте мне описать ситуацию, когда не перемещение мыши раздражает пользователей, а перемещение может на самом деле им понравиться... представьте, что вы щелкаете что-то на веб-страница и элементы на странице перестраиваются; если мышь не двигалась, вы больше не находитесь над элементом, на котором щелкнули; мышь не переместилась относительно страницы, но переместилась относительно содержимого. может потребоваться перемещение мыши относительно страницы, чтобы создать ощущение, что мышь не перемещается.   -  person David Alpert    schedule 16.04.2010


Ответы (6)


Механизма перемещения мыши через JavaScript нет.

person MyItchyChin    schedule 30.07.2009
comment
Любой механизм для ASP.Net, AJAX, jQuery, С#? Я знаю, что положение мыши можно прочитать через jQuery, может быть, есть способ показать его через DOM? - person Michael; 03.08.2009
comment
@Michael: Нет, положение мыши доступно только для чтения для JavaScript. AJAX — это просто метод связи для JavaScript, выполняемого на клиенте, для связи с серверным приложением через HTTP. ASP.NET/C# является серверной частью, и его область действия ограничена сервером, на котором он выполняется. Единственный способ управлять мышью клиента — это приложение на стороне клиента, которое работает в пользовательском пространстве, что означает, что он должен что-то загрузить и установить. - person MyItchyChin; 03.08.2009
comment
Хотя это довольно поздний ответ, спасибо CptSkippy. Я проголосовал и отметил как ответ на ваш комментарий к моему вопросу. - person Michael; 01.02.2011
comment
Если у вас есть момент, и я бы подумал, что это излишество, но может ли Silverlight выполнить действие, поскольку XAP и приложение живут на клиенте? - person Michael; 01.02.2011
comment
@Michael: Нет, Silverlight не может запускать неуправляемый код, и единственный способ управлять мышью — через User32.dll. Если бы приложение Silverlight было вне браузера, оно могло бы вызвать COM, который мог бы обернуть user32.dll, но я не думаю, что вы вообще это имели в виду. - person MyItchyChin; 03.02.2011

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

person Jason Musgrove    schedule 30.07.2009
comment
Я определенно думал о беспокойстве по этому поводу. Если я когда-нибудь столкнусь с такой силой, я обязательно найду решение и дам вам знать. Знаете ли вы серверный скрипт для этого? Спасибо. - person Michael; 03.08.2009
comment
@Michael: сценарий на стороне сервера с меньшей вероятностью будет перемещать указатель мыши клиента. Возможно перемещение указателя мыши возможно с помощью элемента управления ActiveX (только для Internet Explorer), пользовательского подключаемого модуля, элемента управления .NET или, возможно, с помощью подписанного апплета Java. - person Jason Musgrove; 04.08.2009

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

person George    schedule 11.08.2009

Вы можете скрыть курсор и показать другой в другом месте.

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

person Zuul    schedule 08.02.2011
comment
Могу ли я узнать, как это возможно, поскольку мне нужно это реализовать? - person heyanshukla; 08.05.2012
comment
@heyanshukla Чтобы скрыть курсор, вы можете использовать document.body.style.cursor = url('empty.ico');, если у вас есть пустой файл значка . Или вы можете установить document.body.style.cursor = 'none';, но это работает только в Firefox. Конечно, он не может настраивать координаты мыши, только может скрыть курсор. - person Stano; 12.08.2012

Как уже упоминали другие пользователи, для этого нет никакого механизма в Javascript. Однако вы можете отключить мышь и реализовать курсор, чтобы делать то, что вам нужно. Вот ссылка, которая объясняет, как это сделать. Как реализовать пользовательский курсор.

person mahsa.teimourikia    schedule 07.09.2012

Вы наносите на карту положение прокрутки изменения, которое автоматически перемещает указатель в нужное положение;

$(document).scrollTop();

В некоторых случаях мне нужно было держать указатель на одном и том же флажке, хотя отображение/скрытие кнопки вызывало пузыри... поэтому я сделал что-то вроде;

$(document).scrollTop( $(document).scrollTop() + parseInt($('.btn-show-selected-group').outerHeight()) );
$(document).scrollTop( $(document).scrollTop() - parseInt($('.btn-show-selected-group').outerHeight()) );
person Wajahat Ali    schedule 07.05.2018