我有一些javascript出来并在另一个xhtml页面上获取一个javascript“class”。远程javascript看起来如下所示:
(function() {
this.init = function() {
jQuery("#__BALLOONS__tabs").tabs();
};
})
在获取this.javascript之后,我尝试评估它并实例化:
this.javascript = eval("(" + this.javascript + ")");
this.javascript = new this.javascript();
this.javascript.init();
当然,这在IE以外的所有浏览器中都能很好地工作。在IE中,它在评估线上失败。有没有人建议我如何在IE或其他方面使这项工作。
谢谢,皮特
答案 0 :(得分:2)
这适用于好的浏览器和坏的浏览器(意味着ie):
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;
}
享受
答案 1 :(得分:1)
(eval不是IE中的对象方法)。那么该怎么办?答案结果证明您可以使用专有的IE方法window.execScript来评估代码。
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);
}
答案 2 :(得分:1)
你试过了吗?
eval("this.javascript = (" + this.javascript + ")");
...
答案 3 :(得分:0)
如果最糟糕的情况真的发生了,那么这样的事情可能有用:
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>");
答案 4 :(得分:0)
我和IE有同样的eval()问题,而“window.execScript”的功能对我没用。 我发现从一个页面(在我的情况下是php)中使用javascript获取数组的解决方案是使用一些JSON。
// myfeed.php
return json_encode($myarray);
// myjs.js
$.getJSON('myfeed.php',function(data){dataAlreadyEvaled = data;});
这不需要eval()函数,如果它可以帮助任何人......