В последнее время у меня возникли некоторые серьезные проблемы с Firefox. Мой код работает гладко в Chrome, но у Firefox, похоже, есть некоторые проблемы с выяснением того, что я нажимаю. Вы слышали об этом? У меня в основном есть куча SVG в div. В divs есть событие onclick, чтобы вызвать функцию, которая срабатывает, но на неправильном div. Поэтому я нажимаю на div справа, а div слева получает щелчок.
вот javascript
и вот HTML
Он генерирует эти элементы и позиционирует их на всей странице, а при нажатии появляется окно с информацией о элементе. Но другие элементы, кажется, претендуют на то, чтобы быть целью событий, несмотря на то, что я нажимал на несколько сотен пикселей от них.
<div id="6-084" class="room" fullname="John Smith" phonenum="None" pcname="Unknown" wallplatenum="Unknown" onclick="displayInfo(event)" style="height: 72px; width: 96px; position: absolute; left: 753px; top: 236px; opacity: 1;">
<svg id="6-084-svg" style="-webkit-backface-visibility: hidden;" class="room">
<g id="6-084-svg-g">
<path style="fill:none; stroke: black; stroke-width: 2;" d="M 95,1 L 95,51 Q 80,51 80,66 L 95,66 L 95,71 L 1,71 L 1,1 Z "></path>
</g>
</svg>
<div id="6-084 divP" style="position: absolute; z-index: 2; top: 20.5px; left: 34px;">
<p id="6-084 P" style="text-align:center;">Name</p>
</div>
</div>
Вы увидите, что я говорю, когда вы нажимаете SVG для одного с надписью "54", и он запускает SVG для "57". Он также срабатывает просто отлично, если вы нажмете тег p, содержащий "54". Поэтому я предполагаю, что это имеет отношение к SVG.
Есть идеи?
(также, я знаю, что все не согласовано, и я приношу свои извинения за это. Я просто переписал, как он создает теги пути, поэтому мне не нужно беспокоиться о повороте div при их размещении, а теперь все неуместно.)
Добавить
svg.setAttribute("width", "100%");
svg.setAttribute("height", "100%");
после каждой из этих строк
var svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
И это, похоже, исправить. На данный момент вы полагаетесь на ошибку webkit, чтобы ваш код работал.