Как передать данные из originalEvent через объект события? - PullRequest
2 голосов
/ 17 мая 2019

Мне нужно передать originalEvent: MouseEvent { ... } через объект события. Обычно вы можете сделать это так:

$('#name').trigger({
  type: 'mousedown',
  clientX: 115,
  clientY: 20
);

К сожалению, следующее не работает:

$('#name').trigger({
  type: 'mousedown',
  clientX: 115,
  clientY: 20,
  originalEvent: MouseEvent {
    isTrusted: true,
    clientX: 115,
    clientY: 20,
    layerX: 115,
    layerY: 20,
    pageX: 115,
    pageY: 20,
    screenX: 115,
    screenY: 20,
    x: 115,
    y: 20
  },
  pageX: 115,
  pageY: 20
});

Ошибка:

SyntaxError: Неожиданный токен '{'. Ожидается, что '}' завершит литерал объекта.

1 Ответ

1 голос
/ 17 мая 2019

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

Также обратите внимание, что isTrusted - это свойство только для чтения, которое вы не можете установить программно.

$('#name').on('mousedown', function(e) {
  console.log(e.originalEvent);
}); 

$('#name').trigger({
  type: 'mousedown',
  clientX: 115,
  clientY: 20,
  originalEvent: new MouseEvent('click', {
    clientX: 115,
    clientY: 20,
    layerX: 115,
    layerY: 20,
    pageX: 115,
    pageY: 20,
    screenX: 115,
    screenY: 20,
    x: 115,
    y: 20
  }),
  pageX: 115,
  pageY: 20
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button id="name">Name</button>
...