1

我有一个带有字符串参数的 javascript 方法调用。在字符串文本中有时包含 html 字符引用,例如'我收到了一个意外的标识符错误。如果我有字符参考,"那么它工作正常。不知道为什么会这样。下面是我正在尝试做的代码片段。实际方法要长得多,并且尝试做一些与我在这里展示的不同的事情,但是这个片段应该能够重现错误。

<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>

当我将鼠标悬停时,我得到了错误

4

2 回答 2

2

问题是您在评估 JavaScript 之前&#39;被转换为 a 。'因此,JavaScript 看到以下内容(为便于阅读而包装):

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;

请注意字符串如何在 之后结束manufacturer,其余部分作为代码执行,并带有一个额外的不匹配的右引号'。您需要在'in前manufacturer's加上反斜杠,以便在 JavaScript 中正确引用字符串:

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

您还需要在alert表达式中使用括号:

function unescapeHTML(html) {
  var htmlNode = document.createElement("div");
  htmlNode.innerHTML = html;
  if(htmlNode.innerText)
    alert(htmlNode.innerText); // IE
  else 
    alert(htmlNode.textContent); // FF
}
于 2010-01-08T19:23:35.727 回答
0

在该字符引用之后需要一个分号

于 2010-01-08T18:54:27.830 回答