2010-08-04 7 views
4

J'essaie d'identifier si un texte sélectionné (dans Firefox) est en gras ou non? Par exemple:Identifier si le texte sélectionné dans une page Web est en gras ou non

<p>Some <b>text is typed</b> here</p> 

<p>Some <span style="font-weight: bold">more text is typed</span> here</p> 

L'utilisateur peut sélectionner une partie de texte en gras ou le texte en gras. Voici ce que j'essaie de faire:

function isSelectedBold(){ 
    var r = window.getSelection().getRangeAt(0); 
    // then what? 
} 

Pourriez-vous s'il vous plaît aidez-moi?

Merci
Srikanth

+0

Est-ce que ceci est dans un élément éditable (ou un document)? –

Répondre

14

Si la sélection est dans un élément modifiable ou d'un document, est simple:

function selectionIsBold() { 
    var isBold = false; 
    if (document.queryCommandState) { 
     isBold = document.queryCommandState("bold"); 
    } 
    return isBold; 
} 

Sinon, il est un peu plus délicat: dans les navigateurs non-IE, vous aurez doit temporairement rendre le document modifiable:

function selectionIsBold() { 
    var range, isBold = false; 
    if (window.getSelection) { 
     var sel = window.getSelection(); 
     if (sel && sel.getRangeAt && sel.rangeCount) { 
      range = sel.getRangeAt(0); 
      document.designMode = "on"; 
      sel.removeAllRanges(); 
      sel.addRange(range); 
     } 
    } 
    if (document.queryCommandState) { 
     isBold = document.queryCommandState("bold"); 
    } 
    if (document.designMode == "on") { 
     document.designMode = "off"; 
    } 
    return isBold; 
} 
+0

Merci beaucoup. Je vais régler avec cette solution de contournement pour le moment. –

+0

C'est génial, tu es mon champion :) merci! –

Questions connexes