2010-01-08 4 views
1

J'ai un appel de méthode javascript avec un paramètre de chaîne. Dans le texte de chaîne contient parfois des références de caractères html, par ex. ' Je reçois une erreur d'identifiant inattendue. Si j'ai la référence de caractère comme " alors cela fonctionne très bien. Je ne sais pas pourquoi. Voici un extrait de code de ce que j'essaie de faire. La méthode réelle est beaucoup plus longue et essaie de faire quelque chose de différent de ce que je montre ici, mais cet extrait devrait être capable de reproduire l'erreur.Argument de chaîne JavaScript avec référence de caractère

<script> 
function unescapeHTML(html) { 
    var htmlNode = document.createElement("div"); 
    htmlNode.innerHTML = html; 
    if(htmlNode.innerText) 
    alert htmlNode.innerText; // IE 
    else 
    alert htmlNode.textContent; // FF 

} 
</script> 
<a class="as_Glossary" onmouseover="unescapeHTML('The manufacturer&#39;s sales in dollars to all purchasers in the United States excluding certain exemptions for a specific drug in a single calendar quarter divided by the total number of units of the drug sold by the manufacturer in that quarter'); return true;" onmouseout="hideGlossary(); return true;">Test</a> 

Quand je mouseOver je reçois l'erreur

+0

Il n'y a pas charachter entre 9 et demi-colon droit? –

+1

pourriez-vous peut-être afficher la source JavaScript ou au moins Piecs de celui-ci? Cela augmente le temps d'obtenir des réponses de haute qualité considérablement;) – Juri

+0

Merci Juri, j'ai ajouté quelques extraits pour démontrer le problème – Eqbal

Répondre

2

Le problème est que votre &#39; est d'être converti en un ' avant que le JavaScript est évalué. Donc, JavaScript voit les éléments suivants (encapsulées de lisibilité):

unescapeHTML('The manufacturer's sales in dollars to all purchasers in 
the United States excluding certain exemptions for a specific drug in a 
single calendar quarter divided by the total number of units of the drug 
sold by the manufacturer in that quarter'); 
return true; 

Remarquez que la chaîne se termine après manufacturer, et le reste est treaded code, avec une citation à proximité inégalée supplémentaire '. Vous devez préfixer le ' dans manufacturer's avec une barre oblique inverse pour que la chaîne soit correctement cité dans JavaScript:

a class="as_Glossary" onmouseover="unescapeHTML('The manufacturer\&#39;s sales... 

Vous devez également entre parenthèses dans vos alert expressions:

function unescapeHTML(html) { 
    var htmlNode = document.createElement("div"); 
    htmlNode.innerHTML = html; 
    if(htmlNode.innerText) 
    alert(htmlNode.innerText); // IE 
    else 
    alert(htmlNode.textContent); // FF 
} 
+0

Cool. Je l'ai! Ça semble fonctionner maintenant. Merci Brian. – Eqbal

0

Vous avez besoin d'un point-virgule après cette référence de caractère

Questions connexes