A text-overflow:ellipsis;
propriedade CSS deve ser uma das poucas coisas que a Microsoft fez certo para a web.
Todos os outros navegadores agora o suportam ... exceto o Firefox.
Os desenvolvedores do Firefox têm discutido sobre isso desde 2005, mas apesar da óbvia demanda por ele, eles não conseguem realmente implementá-lo (mesmo uma -moz-
implementação experimental seria suficiente).
Alguns anos atrás, alguém descobriu uma maneira de hackear o Firefox 3 para torná-lo compatível com reticências . O hack usa o -moz-binding
recurso para implementá-lo usando XUL. Vários sites já estão usando esse hack.
As más notícias? O Firefox 4 está removendo o -moz-binding
recurso , o que significa que esse hack não funcionará mais.
Portanto, assim que o Firefox 4 for lançado (no final deste mês, ouvi dizer), voltaremos ao problema de não ter suporte para esse recurso.
Portanto, minha pergunta é: existe alguma outra maneira de contornar isso? (Estou tentando evitar cair em uma solução Javascript, se possível)
[EDIT]
Muitos votos a favor, então obviamente não sou o único que quer saber, mas tenho uma resposta até agora que basicamente diz 'use javascript'. Ainda estou esperando por uma solução que não precise do JS ou, na pior das hipóteses, apenas o use como um fallback onde o recurso CSS não funciona. Então, vou postar uma recompensa pela pergunta, na chance de que alguém, em algum lugar, tenha encontrado uma resposta.
[EDIT]
Uma atualização: o Firefox entrou em modo de desenvolvimento rápido, mas apesar do FF5 agora ser lançado, esse recurso ainda não é suportado. E agora que a maioria dos usuários atualizou do FF3.6, o hack não é mais uma solução. A boa notícia é que ele pode ser adicionado ao Firefox 6, que com a nova programação de lançamentos deve ser lançado em apenas alguns meses. Se for esse o caso, então acho que posso esperar, mas é uma pena que eles não pudessem ter resolvido isso antes.
[EDIÇÃO FINAL]
Vejo que o recurso de reticências foi finalmente adicionado ao "Canal Aurora" do Firefox (ou seja, versão de desenvolvimento). Isso significa que agora ele deve ser lançado como parte do Firefox 7, que deve ser lançado no final de 2011. Que alívio.
Notas de versão disponíveis aqui: https://developer.mozilla.org/en-US/Firefox/Releases/7
Respostas:
Spudley, você poderia conseguir a mesma coisa escrevendo um pequeno JavaScript usando jQuery:
Eu entendo que deve haver alguma maneira de todos os navegadores suportarem isso nativamente (sem JavaScript), mas é isso que temos neste momento.
EDIT Além disso, você pode torná-lo mais organizado anexando uma
css
classe a todos os campos de largura fixa, digamos,fixWidth
e fazer algo como o seguinte:fonte
text-overflow:ellipsis;
para que eu ainda pudesse usar a opção CSS em outros navegadores.length()
serlength
? É uma propriedade.EDITAR 30/09/2011
FF7 foi lançado, esse bug foi resolvido e funciona!
EDITAR 29/08/2011
Este problema está marcado como resolvido e estará disponível no FF 7; atualmente definido para lançamento em 27/09/2011.
Marque seus calendários e prepare-se para remover todos os hacks que você implementou.
VELHO
Eu tenho outra resposta: espere .
A equipe de desenvolvimento do FF está empenhada em resolver esse problema.
Eles têm uma correção provisória definida para o Firefox 6.
Calma aí, pessoa imaginária e super reativa. O Firefox está no caminho do desenvolvimento rápido. O FF6 está programado para lançamento seis semanas após o Firefox 5. O Firefox 5 está programado para lançamento em 21 de junho de 2011.
Então isso coloca a correção em algum momento no início de agosto de 2011 ... espero.
Você pode se inscrever na lista de discussão seguindo o bug do link na pergunta do postador original.
Ou você pode clicar aqui ; o que for mais fácil.
fonte
Devo dizer que estou um pouco desapontado com o fato de que o único hack específico do navegador em meu aplicativo será o suporte a FF4. A solução javascript acima não leva em conta fontes de largura variável. Aqui está um script mais detalhado que explica isso. O grande problema com essa solução é que, se o elemento que contém o texto estiver oculto quando o código for executado, a largura da caixa não será conhecida. Este foi um problema para mim, então parei de trabalhar / testá-lo ... mas pensei em postá-lo aqui, caso seja útil para alguém. Certifique-se de testá-lo bem, pois meu teste não foi exaustivo. Eu pretendia adicionar uma verificação de navegador para executar apenas o código para FF4 e permitir que todos os outros navegadores usassem sua solução existente.
Deve estar disponível para manipulação aqui: http://jsfiddle.net/kn9Qg/130/
HTML:
CSS:
Javascript (usa jQuery)
Seria chamado assim:
fonte
Também encontrei este gremlin na semana passada.
Uma vez que a solução aceita não leva em conta fontes de largura variável e a solução do wwwhack tem um loop while, eu colocarei meu $ 0,02.
Consegui reduzir drasticamente o tempo de processamento do meu problema usando a multiplicação cruzada. Basicamente, temos uma fórmula semelhante a esta:
A variável x neste caso é o que precisamos resolver. Quando retornado como um inteiro, ele fornecerá o novo comprimento que o texto transbordado deve ter. Multipliquei MaxLength por 80% para dar às elipses espaço suficiente para serem exibidas.
Aqui está um exemplo completo de html:
Eu entendo que essa é uma correção apenas de JS, mas até que o Mozilla corrija o bug, eu simplesmente não sou inteligente o suficiente para apresentar uma solução CSS.
Este exemplo funciona melhor para mim porque o JS é chamado sempre que uma grade é carregada em nosso aplicativo. A largura da coluna para cada grade varia e não temos controle sobre o tipo de computador que nossos usuários do Firefox visualizam nosso aplicativo (o que, é claro, não deveríamos ter esse controle :)).
fonte
Essa solução CSS pura é muito próxima, exceto pelo fato de que faz com que apareçam reticências após cada linha.
fonte