Como destacar / selecionar o conteúdo de uma tag DIV quando o usuário clica no DIV ... a idéia é que todo o texto seja realçado / selecionado para que o usuário não precise realçar manualmente o texto com o mouse e, potencialmente, perdeu um pouco do texto?
Por exemplo, digamos que temos um DIV como abaixo:
<div id="selectable">http://example.com/page.htm</div>
... e quando o usuário clica em qualquer um desses URL, o texto completo do URL é destacado para que você possa arrastar facilmente o texto selecionado pelo navegador ou copiar o URL completo com um clique direito.
Obrigado!
javascript
css
Acyra
fonte
fonte
document.getElementById('selectable')
porthis
. Em seguida, você pode adicionar a funcionalidade de maneira discreta a vários elementos, por exemplo, várias divs em um contêiner:jQuery('#selectcontainer div').click(selectText);
if (window.getSelection) {
deve vir em primeiro lugar para o Opera ( quirksmode.org/dom/range_intro.html )window.getSelection().removeAllRanges();
anteswindow.getSelection().addRange(range);
ATUALIZAÇÃO 2017:
Para selecionar a chamada de conteúdo do nó:
Isso funciona em todos os navegadores modernos, incluindo o IE9 + (no modo de padrões).
Exemplo executável:
A resposta original abaixo está obsoleta, pois
window.getSelection().addRange(range);
foi preteridaResposta original:
Todos os exemplos acima usam:
mas o problema é que ele seleciona o próprio nó, incluindo a tag DIV etc.
Para selecionar o texto do nó de acordo com a pergunta do OP que você precisa chamar:
Portanto, o snippet completo seria:
fonte
this
vez de obter o elemento com base no ID, desde que esteja dentro doclick
ouvinte do elemento .Existe uma solução CSS4 pura:
user-select
é uma especificação do módulo CSS de nível 4, que atualmente é uma propriedade CSS rascunho e não padrão, mas os navegadores a suportam bem - consulte # search = user-select .Leia mais sobre a seleção de usuários aqui no MDN e brinque com ele aqui no w3scools
fonte
A resposta do Neuroxik foi realmente útil. Eu tive apenas um problema com o Chrome, porque quando eu cliquei em uma div externa, ela não funcionou. Eu poderia resolvê-lo removendo os intervalos antigos antes de adicionar o novo intervalo:
fonte
Para itens editáveis por conteúdo (não entradas regulares, é necessário usar selectNodeContents (em vez de apenas selectNode).
NOTA: Todas as referências a "document.selection" e "createTextRange ()" são para o IE 8 e inferior ... Você provavelmente não precisará oferecer suporte a esse monstro se estiver tentando fazer coisas complicadas como esta.
fonte
Usando um campo da área de texto, você pode usar este: (Via Google)
É assim que vejo a maioria dos sites. Eles apenas o estilizam com CSS, para que não pareça uma área de texto.
fonte
this.focus();this.select();
?Este trecho fornece a funcionalidade necessária . O que você precisa fazer é adicionar um evento à div que ativa o fnSelect nele. Um hack rápido que você não deveria fazer e possivelmente não funcionaria seria assim:
Obviamente, assumindo que o link ao snippet havia sido incluído.
fonte
Achei útil agrupar essa função como um plugin jQuery:
Assim, torna-se uma solução reutilizável. Então você pode fazer isso:
E será selecionado teste na div.
fonte
Que tal esta solução simples? :)
Claro que não é uma construção div, como você mencionou, mas ainda assim funcionou para mim.
fonte
Niko Lay: Que tal esta solução simples? :)
.....
Código antes:
Código após:
Apenas esta parte onclick = "this.select ();" id = "selecionável" no meu código funcionou bem. Seleciona tudo na minha caixa de código com um clique do mouse.
Obrigado pela ajuda Niko Lay!
fonte
A resposta acima não está funcionando no Chrome porque o addRange remove o intervalo adicionado anterior. Eu não encontrei nenhuma solução para isso ao lado de seleção falsa com css.
fonte
Facilmente alcançado com a propriedade css user-select definida para todos. Como isso:
fonte