Javascript&成为&

时间:2011-12-10 20:22:36

标签: javascript html

我在div中有一些javascript,可以让它从iframe移动到主页面。它工作正常,但当我使用&像这样:

function JS_onMouseOverBG(e, i_bg) {
  if( (block == 0)&&(i_bg != selected) ) {
    e.style.cursor = 'pointer' ;
  } else {
    e.style.cursor = '' ;
  }
}

然后&变为&,我有这个firefox错误:

Erreur : missing ) after condition
Fichier Source : http://192.168.0.20/lb/?p=467&w=prefs_bggen
Ligne : 905, Colonne : 22
Code Source :
  if( (block == 0)&&(i_bg != selected) ) { 

我尝试使用\u0026的unicode &,但它不起作用。我有一个非法的错误。

在这种情况下如何使用&

编辑: 如果有人找到同样的问题,我找到了解决方案:

function JS_decode(str) {
  var div = document.createElement('div'); 
  div.innerHTML = str ;
  var decoded = div.firstChild.nodeValue; 
  return decoded ;
}

我将此函数用于包含Javascript代码的此DIV DIV_cover_js:

var eleJS = document.createElement("script") ;
eleJS.type = 'text/javascript' ;
eleJS.text = get('DIV_cover_js').innerHTML ;
eleJS.text = JS_decode(WP.eleJS.text) ;
eval(eleJS.text);

2 个答案:

答案 0 :(得分:2)

(引自OP的评论):

  

WP.eleJS.text = get('DIV_prefs_js').innerHTML ; eval(WP.eleJS.text);

如果原始HTML包含&&,那么这是error,浏览器正在对其进行更正。

然后,您将DOM序列化为HTML并尝试将某些HTML视为JavaScript。

如果你真的想这样做,那么你应该提取一个textNode并使用它的data代替innerHTML,但这种方法很丑陋,速度慢且难以调试。您应该首先通过<script>元素加载正确的JS函数。

答案 1 :(得分:1)

JavaScript不会进入<div>。它进入<script>