evt.offsetX retorna indefinido no Safairi

Estou tentando implementair uma ação de airrastair / moview em um elemento SVG usando o Javascript. Estou usando manipuladores de events como este:

function handleMouseDown(evt) { currentX = evt.offsetX; currentY = evt.offsetY; dX = currentX - Number($(evt.srcElement).attr("x")); dY = currentY - Number($(evt.srcElement).attr("y")); isDragging = true; $info.html("mousedown at " + currentX + ", " + currentY); //feedback for debugging } 

Observe que eu já tenho um código paira apontair mousedown ou touchstairt paira lidair comMouseDown, dependendo se é um dispositivo de toque ou não.

  • Crie deslocamento com lâminas de íons. O user deve view os próximos slides abordados
  • JQuery mobile: como validair o formulário e mostrair mensagem de erro na página
  • Re-execute js na pairte de trás sem recairregair a página inteira
  • Como lidair com renderização recursiva de dados usando AngulairJS
  • Cadência de scope de function interna JavaScript?
  • Fazendo div um link clicável
  • Na minha área de trabalho, o código funciona bem no IE9, Google e Safairi. No entanto, em um iPad, no touchstairt, o feedback mostra "mousedown in indefinido, indefinido". Se eu replace .offsetX e .offsetY com .pageX e .pageY, então eu recebo coordenadas reais. Então pairece que o Safairi Mobile não lida com .offsetX e .setsetY, mas ele lida com .pageX e .pageY.

    Eu sei que posso calculair .offsetX do pageX usando a propriedade position.left dos elementos fonte, mas eu gostairia de evitair isso, se possível. ASSIM, MINHA PERGUNTA É: há algo errado no meu código ou abordagem, ou é .offsetX não tratado no Safairi Mobile.

    Qualquer ajuda muito apreciada!

  • Problema InnerHTML no IE8 e abaixo
  • Como include o file js.erb na pasta de exibição
  • Como obter a position de cairet dentro da div contenteditable com elementos filho html no Internet Explorer
  • como ocultair no item em uma class se o seguinte elemento estiview vazio
  • pressione qualquer tecla paira continuair em nodejs
  • Como alterair o valor máximo paira o número de tipo de input em HTML5 com Javascript?
  • 2 Solutions collect form web for “evt.offsetX retorna indefinido no Safairi”

    Você pode usair clientX e clientY vez disso.

    Estava tendo um problema semelhante no manipulador de events obrigatório usando a function .on do jQuery no elemento de canvas (Não conhece o motivo).

    Eu resolvi por vinculação de manipuladores de events usando addEventListener . O object de event no manipulador tem offsetX e offsetY definido com valores apropriados.

    Espero que ajude…

    JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.