JavaScript 和成为&;

发布于 2024-12-20 14:09:57 字数 1192 浏览 0 评论 0原文

我在 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) ) { 

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

在这种情况下我该如何使用 &

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

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

I have some javascript in a div to make it move from an iframe to the main page. It works fine but when I use & like this:

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

Then & becomes & and I have this firefox error:

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

I tried using the unicode \u0026 of & but it does not work. I have an error of illegal character.

How can I do to use & in such a case ?

Edit:
I've found the solution, if someone looks for the same issue:

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

And I use this function for this DIV DIV_cover_js containing the Javascript code:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

还给你自由 2024-12-27 14:09:57

(引自OP的评论):

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

如果原始 HTML 包含 && 那么那就是 错误,浏览器正在纠正它。

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

如果你真的想这样做,那么你应该提取一个 textNode 并使用它的 data 而不是 innerHTML,但是这种方法很丑陋,速度很慢并且很难调试。首先,您应该通过

(Quoted from a comment by the OP):

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

If the original HTML includes && then that is an error and the browser is correcting it.

You then get a serialisation of the DOM to HTML and try to treat some HTML as JavaScript.

If you really want to do this, then you should extract a textNode and use its data instead of innerHTML, however the approach is ugly, slow and hard to debug. You should have a proper JS function loaded via a <script> element in the first place.

陈甜 2024-12-27 14:09:57

JavaScript 不会出现在

中。它位于

JavaScript doesn't go in a <div>. It goes in a <script>.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文