Я использую HTMLObjectElement для отображения графики SVG, как рекомендовано здесь: https://www.sitepoint.com/add-svg-to-web-page/
Проблема в том, что в javaScript я сделал что-то вроде:
const objEl = document.createElement( 'object' );
objEl.type = 'image/svg+xml';
objEl.data = 'myGraphic.svg';
objEl.onclick = () => {
console.log( 'I was clicked' );
}
и событие onclick никогда не запускается, когда я нажимаю на него мышью.
Если я использую img, а не объект, событие щелчка срабатывает. Почему событие клика не работает для объектов? Как я могу получить события кликов?
Обратите внимание: я также прикрепил события objEl.onmouseover и objEl.onmouseout, и они прекрасно работают. У меня не работают только события кликов.
<object>
связан с теми же правилами, что и элемент<iframe>
, и действительно, он не позволит родительскому документу узнать, что происходит внутри его contentDocument, и не будет всплывать события указателя, которые он получил. Поскольку вы отображаете документ svg, вы можете добавить в него скрипт, напримерonclick = e => parent.postMessage({x:e.clientX, y:e.clientY}, '*');
. jsfiddle.net/j8y4h28L - person Kaiido   schedule 08.03.2018getSVGDocument
, но этот метод привязан к той же политике происхождения. - person Kaiido   schedule 09.03.2018