Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

453
Visualizações
Cómo comprobar si el texto seleccionado está en negrita o no (contenteditable)

Estoy implementando un editor de texto personalizado usando la función de edición de contenido incorporada contenteditable . Necesito saber cuándo el usuario seleccionó un texto en el editor de texto, ya sea que esté en negrita o no.

Aquí lo que tengo ahora mismo:

HTML

 <button onclick="boldit()">B</button> <div id="editor" contenteditable="true" class="email-body"> This is an <strong>editable</strong> paragraph. </div>

JavaScript

 function boldit(){ document.execCommand('bold'); }
about 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

La forma confiable es atravesar el árbol principal verificando getComputedStyle.

Asumiré que ya tiene los elementos seleccionados.

 function isBold(_element) { var element = _element; while (element) { var style = getComputedStyle(element).fontWeight; if (Number(fontWeight) > 400 || fontWeight === 'bold' || fontWeight === 'bolder') { return true; } element = element.parentNode; } return false; }
about 4 years ago · Santiago Trujillo Relatório

0

 jQuery(function($) { $('.embolden').click(function(){ if(selectionIsBold()){ alert('bold'); } else { alert('not bold'); } }); }); function selectionIsBold() { var isBold = false; if (document.queryCommandState) { isBold = document.queryCommandState("bold"); } return isBold; }
 .bold { font-weight: bold; }
 <div contenteditable="true" class="textEditor">Some <span class="bold">random </span>text.</div> <a href="#" class="embolden">Is Bold Text</a> <script src="https://code.jquery.com/jquery-3.2.1.min.js" integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" crossorigin="anonymous"></script>

Resalta el texto y haz clic en el enlace.

about 4 years ago · Santiago Trujillo Relatório

0

Simplemente llame a isSelectionBold() :)

Demostración en CodePen

 function isSelectionBold() { var sel; if (window.getSelection) { sel = window.getSelection(); } else if (document.getSelection) { sel = document.getSelection(); } var raw_html = getSelectionAsHtml(); // This is if nothing is selected if(raw_html==="") return false; var tempDiv = document.createElement('div'); tempDiv.innerHTML = raw_html; var is_bold_nodes = [] for (var node of tempDiv.childNodes) { var tags = [node.nodeName.toLowerCase()]; // This covers selection that are inside bolded characters while(tags.includes("#text")) { var start_tag = sel.anchorNode.parentNode.nodeName.toLowerCase(); var end_tag = sel.focusNode.parentNode.nodeName.toLowerCase(); tags = [start_tag, end_tag] } is_bold_nodes.push(containsOnly(['strong', 'b'], tags)); } return (! is_bold_nodes.includes(false)) } function getSelectionAsHtml() { var html = ""; if (typeof window.getSelection != "undefined") { var sel = window.getSelection(); if (sel.rangeCount) { var container = document.createElement("div"); for (var i = 0, len = sel.rangeCount; i < len; ++i) { container.appendChild(sel.getRangeAt(i).cloneContents()); } html = container.innerHTML; } } else if (typeof document.selection != "undefined") { if (document.selection.type == "Text") { html = document.selection.createRange().htmlText; } } return html; } function containsOnly(array1, array2){ return !array2.some(elem => !array1.includes(elem)) }
about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda