SVG не распознает указатели-события: нет
У меня есть верхний слой с прозрачным набором фоновых изображений и хотелось бы, чтобы все события указателя были проигнорированы. Поэтому изначально у меня было настроено с <div style="pointer-events"></div>
, которое отлично поработало, но потом я узнал, что IE не поддерживает это.
Дальнейшее чтение Я нахожу несколько мест, в которых говорится, что IE поддерживает <svg>
с помощью pointer-events:none
, но я не могу заставить его работать (я никогда не использовал теги SVG, чтобы я мог делать все это неправильно).
Пожалуйста, посмотрите на эту очень упрощенную скрипку того, чего я надеюсь достичь. http://jsfiddle.net/AGVTM/
Ответы
Ответ 1
Элемент root (top most) <svg>
не поддерживает pointer-events: none
. Причина этого заключается в том, что это возможный эксплойт безопасности, вы можете использовать кнопку Facebook Like с SVG и пропускать клики, как в этом примере http://jsfiddle.net/rVxTn/
Если элемент SVG не является root, тогда клики должны пройти. Этот пример должен работать на IE9 (untested)
http://jsfiddle.net/DLEsn/
Однако это не решает вашу проблему, потому что вы не можете помещать элементы HTML внутри элемента SVG.
Я сталкивался с этой проблемой несколько раз раньше, мне приходилось обходить ее по-разному. Я предлагаю вам открыть новый вопрос с фактической проблемой (и, возможно, скриншотами), чтобы увидеть, как это можно обойти.
Ответ 2
Корневая причина
Абсолютно позиционированные SVG не будут распространять клики на HTML-элементы в IE9.
См. это обсуждение тестового примера webkit: REGRESSION (r66731): в некоторых случаях события-указатели разбиваются, а соответствующий минимальный тестовый сценарий. Смысл, интересно, эта ошибка почти дошла до WebKit, но была исправлена вовремя.
В случае IE 9 результаты:
IE 9.0.8112.16421 = сбой тест 1: плавающий; проходит тест 2: встроенный
Обходные
См. этот пост StackOverflow при имитации pointer-events: none
- Как заставить Internet Explorer эмулировать указатели-события: нет?
Они обсуждают в первую очередь не-SVG-элементы, но метод пересылки кликов на базовые элементы также может применяться в вашем случае.