我有一些JavaScript代码熄灭,并获取另一个XHTML页面上的一个javascript“类”。远程的JavaScript看起来像下面这样:

    (function() {
        this.init = function() {
            jQuery("#__BALLOONS__tabs").tabs();
        };
    })

这是取入this.javascript后,我尝试EVAL它和实例:

   this.javascript = eval("(" + this.javascript + ")");
   this.javascript = new this.javascript();
   this.javascript.init();

当然,这完全在除IE所有浏览器。在IE中,它未能在EVAL线。有没有人对我怎样可以使IE或替代这一工作的建议。

谢谢,皮特

有帮助吗?

解决方案

你试过:

eval("this.javascript = (" + this.javascript + ")");

...

其他提示

此曾与良好的浏览器和坏的(这意味着即):

var code_evaled;
function eval_global(codetoeval) {
    if (window.execScript)
        window.execScript('code_evaled = ' + '(' + codetoeval + ')',''); // execScript doesn’t return anything
    else
        code_evaled = eval(codetoeval);
    return code_evaled;
}

享受

(EVAL是不是在IE物体的方法)。那么该怎么办?答案结果是,你可以使用一个专有的IE方法window.execScript到EVAL代码。

function loadMyFuncModule(var stufftoeval) {
  var dj_global = this; // global scope reference
  if (window.execScript) {

    window.execScript("(" + stufftoeval + ")");

    return null; // execScript doesn’t return anything
  }
  return dj_global.eval ? dj_global.eval(stufftoeval) : eval(stufftoeval);
}

如果最坏真正涉及到最坏的情况,这样的事情可能工作:

var self = this;
funcid = "callback" + Math.random();
window[funcid] = function(javascript) {
  delete window[funcid];
  self.javascript = javascript;
  self.javascript = new self.javascript();
  self.javascript.init();
}
document.write("<script language='javascript'>" +
               "window." + funcid + "(" +
                 "(" + this.javascript + "));" +
               "</script>");

我的eval()与IE同样的问题,并以“window.execScript”功能并没有为我工作。 我发现从页面(在我的情况下,PHP)可以在javascript阵列的解决方案是使用JSON一些。

// myfeed.php

return json_encode($myarray);

// myjs.js

$.getJSON('myfeed.php',function(data){dataAlreadyEvaled = data;});

此不需要eval()函数,如果它有助于任何...

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top