2017-01-21 3 views
1

Я разрабатываю приложение, которое должно быть совместимо с IE 9 и выше. Я использую свойство moveX на объекте MouseEvent, однако этот же объект MouseEvent не имеет свойства moveX в Internet Explorer (9 или 11).MouseEvent movementX свойство, по-видимому, не поддерживается в Internet explorer

Я просмотрел документацию Microsoft и действительно заявляю, что поддерживает это свойство на своих объектах MouseEvent. Я проверил, что это на самом деле объект MouseEvent, и он просто не обладает свойством. Все остальные свойства доступны, кроме этого.

У кого-нибудь есть опыт работы с этой проблемой? Интернет в целом выглядит довольно тихим на этом.

+0

см. Http://www.bing.com/search?q=mouseevent+movementx ... возможно, вы неправильно поняли MSN как MSDN? Если вы наберете MouseEvent.prototype в консоли разработчика, он перечислит его членов. –

+0

извинения ... это сообщение MSDN ref: https://msdn.microsoft.com/en-us/library/ff974344(v=vs.85).aspx говорит Возвращает разницу в горизонтальном положении (в единицах screenX) с момента последнего mousemove (или pointermove). –

+0

Вы когда-нибудь разрешали эту проблему? У меня такая же проблема. Кажется, движениеX и движениеY на MouseEvent в IE11 просто выросли и исчезли. Я вернул проект обратно к версии, которую я знаю, работая в IE11, используя эти свойства, и даже это больше не работает. –

ответ

1

Вам нужно будет повторить его поведение, взяв дельту между последующими значениями screenX и screenY.

// Store previous screenX/screenY somewhere outside of callback 
var prevX = 0; 
var prevY = 0; 

// Callback whenever the mouse moves 
function mousemove(e) { 
    var movementX = (prevX ? e.screenX - prevX : 0) 
    var movementY = (prevY ? e.screenY - prevY : 0) 

    prevX = e.screenX; 
    prevY = e.screenY; 
} 

Обратите внимание, что если вы слушаете mousemove сказать, выяснить, если что-то тащат, вы должны сбросить prevX и prevY к 0 на mouseup или иначе вы получите старые значения экрана!

Смежные вопросы