Eu tenho um menu de navegação suspenso no qual alguns dos títulos não devem navegar para outra página quando clicados (esses títulos abrem um menu suspenso quando clicados) enquanto outros devem navegar (eles não têm menu suspenso e navegam diretamente). tipos href
definiram para eles
Para resolver isso, adicionei o seguinte css para o antigo tipo de títulos
pointer-events: none;
e está funcionando bem. Mas, como essa propriedade não é suportada pelo IE, estou procurando uma solução alternativa. O irritante é que não tenho acesso nem privilégio para alterar completamente o código HTML e JavaScript .
Alguma ideia?
pointer-events
agora está no IE11 +Respostas:
Pointer-events é um hack da Mozilla e, onde foi implementado nos navegadores Webkit, você não pode esperar vê-lo nos navegadores IE por mais um milhão de anos.
Existe, no entanto, uma solução que encontrei:
Encaminhando eventos do mouse através de camadas
Isso usa um plug-in que usa algumas propriedades não conhecidas / entendidas do Javascript para pegar o evento do mouse e enviá-lo para outro elemento.
Há também outra solução Javascript aqui .
Atualização para outubro de 2013 : aparentemente está chegando ao IE na v11. Fonte . Obrigado Tim.
fonte
"you can't expect to see it in IE browsers for another million years."
Levou apenas 3 anos ...Aqui está outra solução que é muito fácil de implementar com 5 linhas de código:
Exemplo:
fonte
Existe uma solução alternativa para o IE - use SVG embutido e defina eventos-ponteiro = "nenhum" no SVG. Veja minha resposta em Como fazer o Internet Explorer emular eventos-ponteiro: nenhum?
fonte
Vale ressaltar que, especificamente para o IE,
disabled=disabled
funciona para tags de âncora:O IE trata isso como um
disabled
elemento e não aciona o evento de clique. No entanto,disabled
não é um atributo válido em uma marca de âncora. Portanto, isso não funcionará em outros navegadores. Para elespointer-events:none
é necessário no estilo.ATUALIZAÇÃO 1 : A adição da regra a seguir me parece uma solução entre navegadores.
ATUALIZAÇÃO 2 : Para maior compatibilidade, porque o IE não formará estilos para tags âncora
disabled='disabled'
, portanto, ainda parecerão ativos. Portanto,a:hover{}
regra e estilo são uma boa ideia:Trabalhando no Chrome, IE11 e IE8.
Obviamente, o CSS acima pressupõe que as tags âncora sejam renderizadas com
disabled="disabled"
fonte
Aqui está um pequeno script implementando esse recurso (inspirado no artigo do blog Shea Frederick mencionado por Kyle):
fonte
Cubra os elementos ofensivos com um bloco invisível, usando um pseudo-elemento:
:before
ou:after
Assim, você clica no elemento pai. Não é bom, se o pai for clicável, mas funcionar bem caso contrário.
fonte
Passei quase dois dias encontrando a solução para esse problema e finalmente encontrei isso.
Isso usa javascript e jquery.
(GitHub) pointer_events_polyfill
Isso pode usar um plug-in javascript para ser baixado / copiado. Basta copiar / baixar os códigos desse site e salvá-lo como
pointer_events_polyfill.js
. Inclua esse javascript no seu site.<script src="JS/pointer_events_polyfill.js></script>
Adicione esses scripts jquery ao seu site
E não se esqueça de incluir seu plug-in jquery.
Funciona! Eu posso clicar nos elementos abaixo do elemento transparente. Estou usando o IE 10. Espero que isso também funcione no IE 9 e abaixo.
EDIT: O uso desta solução não funciona quando você clica nas caixas de texto abaixo do elemento transparente. Para resolver esse problema, uso o foco quando o usuário clica na caixa de texto.
Javascript:
JQuery:
Isso permite que você digite o texto na caixa de texto.
fonte
Encontrei outra solução para resolver esse problema. Eu uso o jQuery para definir o
href
atributo-comojavascript:;
(não '', ou o navegador recarregará a página) se a largura da janela do navegador for maior que 1'000px. Você precisa adicionar um ID ao seu link. Aqui está o que estou fazendo:Talvez seja útil para você.
fonte
Usar
OnClientClick = "return false;"
fonte
Você também pode simplesmente "não" adicionar um URL dentro da
<a>
tag, eu faço isso para menus que são<a>
direcionados a tags também. Se não houver um menu suspenso, adiciono o URL, mas se houver menus suspensos com uma<ul> <li>
lista, basta removê-lo.fonte
Eu enfrentei problemas semelhantes:
Eu enfrentei esse problema em uma diretiva, corrigi-o adicionando um como elemento pai e criando eventos-ponteiro: nenhum para isso
A correção acima não funcionou para a tag select e adicionei cursor: text (que era o que eu queria) e funcionou para mim
Se um cursor normal for necessário, você poderá adicionar o cursor: default
fonte
Melhor solução:
Funciona perfeitamente em todos os navegadores
fonte