2010-09-06 4 views
1

Je suis un débutant mais j'ai besoin d'un script qui pourrait m'aider dans certaines pages. J'ai besoin d'un script qui analise le texte de la page et s'il y a le mot que je cherche, il montre un groupe, sinon il ne fait rien. Voici le code, mais il ne fonctionne pas avec Firefox parce que la fonction de plage de texte est seulement pour IE (probablement ne fonctionne pas parce que je ne peux pas faire javascript). Quelqu'un m'a dit d'utiliser la fonction tostrign mais je ne sais pas comment: P Donc, si vous pouviez changer s'il vous plaît pour que ça fonctionne, ce serait vraiment génial.Plage de texte Javascript dans firefox + greasemonkey

document.body.onload = cerca(); 
    function cerca() { 
    Range = document.body.createRange(); 
    campo = toString(); 
    var c = campo.findText("ciao"); 
    if(c){ 
     alert("Corrispondenza Trovata") } else {alert("nada"); } 
    } 

merci beaucoup :)

+0

Voulez-vous simplement savoir automatiquement si le mot est présent sur la page WHOLE? Il y a des façons beaucoup plus simples de le faire. Ou voulez-vous que le test soit activé en sélectionnant/mettant en surbrillance une plage de texte? –

Répondre

2

Firefox a Range s au lieu de TextRange s. Si vous voulez juste vérifier la présence d'un morceau de texte particulier dans la page et ne pas le mettre en évidence, ce qui suit fonctionnera dans Firefox. La raison de l'utilisation de l'objet Selection est qu'une plage englobant tout le corps inclut tous les nœuds de texte dans le corps, y compris ceux à l'intérieur des éléments <script>, tandis que le résultat de l'appel toString() sur l'objet Selection inclut uniquement du texte visible, ce que vous voulez . Notez également que cette fonction efface la sélection en cours, s'il en existe une; Si cela vous pose un problème, vous pouvez stocker et restaurer ultérieurement les plages sélectionnées.

function visibleTextContains(str) { 
    var range = document.createRange(); 
    range.selectNodeContents(document.body); 
    var sel = window.getSelection(); 
    sel.removeAllRanges(); 
    sel.addRange(range); 
    var visibleText = sel.toString(); 
    sel.removeAllRanges(); 
    return visibleText.indexOf(str) > -1; 
} 
Questions connexes