У меня есть раскрывающееся меню навигации, в котором некоторые заголовки не должны переходить на другую страницу при нажатии (эти заголовки открывают раскрывающееся меню при нажатии), в то время как другие должны перемещаться (у них нет раскрывающегося списка и они перемещаются напрямую). Однако оба типы href
определили им
Чтобы решить эту проблему, я добавил следующий CSS для первого типа заголовков
pointer-events: none;
и он работает нормально. Но так как это свойство не поддерживается IE, я ищу некоторые обходные пути. Раздражает то, что у меня нет доступа и привилегий для полного изменения кода HTML и JavaScript .
Любые идеи?
pointer-events
теперь в IE11 +Ответы:
Pointer-events - это взлом Mozilla, и там, где он был реализован в браузерах Webkit, вы не сможете увидеть его в браузерах IE еще миллион лет.
Однако есть решение, которое я нашел:
Пересылка событий мыши через слои
При этом используется плагин, который использует некоторые не очень известные / понятные свойства Javascript для получения события мыши и отправки его другому элементу.
Существует и другое решение Javascript здесь .
Обновление за октябрь 2013 года : по-видимому, оно выйдет в IE в v11. Источник . Спасибо, Тим.
источник
"you can't expect to see it in IE browsers for another million years."
Прошло всего 3 года ...Вот еще одно решение, которое очень легко реализовать с помощью 5 строк кода:
Пример:
источник
Для IE есть обходной путь - используйте встроенный SVG и установите pointer-events = "none" в SVG. Смотрите мой ответ в Как заставить Internet Explorer эмулировать события указателя: нет?
источник
Стоит отметить, что специально для IE,
disabled=disabled
работает с тегами привязки:IE обрабатывает это как
disabled
элемент и не вызывает событие нажатия. Однакоdisabled
недопустимый атрибут для тега привязки. Следовательно, это не будет работать в других браузерах. Для нихpointer-events:none
требуется укладка.ОБНОВЛЕНИЕ 1 : Таким образом, добавление следующего правила выглядит для меня кросс-браузерным решением.
ОБНОВЛЕНИЕ 2 : Для дальнейшей совместимости, потому что IE не будет формировать стили для тегов привязки с
disabled='disabled'
, поэтому они все равно будут выглядеть активными. Таким образом,a:hover{}
правила и стилизация это хорошая идея:Работает на Chrome, IE11 и IE8.
Конечно, выше CSS предполагает, что якорные теги отображаются с
disabled="disabled"
источник
Вот небольшой скрипт, реализующий эту функцию (вдохновленный статьей в блоге Shea Frederick, которую упоминает Кайл):
источник
Покройте нарушающие элементы невидимым блоком, используя псевдоэлемент:
:before
или:after
Таким образом, вы кликаете по родительскому элементу. Ничего хорошего, если родитель кликабелен, но в противном случае работает хорошо.
источник
Я потратил почти два дня, чтобы найти решение этой проблемы, и я наконец нашел это.
Это использует JavaScript и JQuery.
(GitHub) pointer_events_polyfill
Это может использовать плагин javascript для загрузки / копирования. Просто скопируйте / скачайте коды с этого сайта и сохраните их как
pointer_events_polyfill.js
. Включите этот JavaScript на свой сайт.<script src="JS/pointer_events_polyfill.js></script>
Добавьте сценарии jquery на ваш сайт
И не забудьте включить свой плагин jquery.
Оно работает! Я могу щелкнуть элементы под прозрачным элементом. Я использую IE 10. Я надеюсь, что это также может работать в IE 9 и ниже.
РЕДАКТИРОВАТЬ: Использование этого решения не работает, когда вы нажимаете текстовые поля под прозрачным элементом. Чтобы решить эту проблему, я использую фокус, когда пользователь нажимает на текстовое поле.
Javascript:
JQuery:
Это позволяет вам вводить текст в текстовое поле.
источник
Я нашел другое решение, чтобы решить эту проблему. Я использую jQuery, чтобы установить
href
-attribute вjavascript:;
(не '', иначе браузер перезагрузит страницу), если ширина окна браузера превышает 1'000px. Вам нужно добавить идентификатор к вашей ссылке. Вот что я делаю:Может быть, это полезно для вас.
источник
использование
OnClientClick = "return false;"
источник
Вы также можете просто «не» добавить URL внутри
<a>
тега, я делаю это для меню, которые также<a>
управляются тегами с выпадающими списками. Если нет выпадающего<ul> <li>
списка, тогда я добавляю URL, но если есть выпадающие списки, я просто удаляю их.источник
Я столкнулся с похожими проблемами:
Я столкнулся с этой проблемой в директиве, я исправил ее, добавив в качестве родительского элемента a и сделав события указателя: для этого ничего нет
Вышеупомянутое исправление не работало для тега select, затем я добавил курсор: текст (что было тем, что я хотел), и это сработало для меня
Если нужен нормальный курсор, вы можете добавить курсор: по умолчанию
источник
Лучшее решение:
Отлично работает во всех браузерах
источник