IE 에서이 eval () 호출을 받으려면 어떻게해야합니까?
-
20-08-2019 - |
문제
다른 XHTML 페이지에서 꺼내어 JavaScript "클래스"를 가져 오는 JavaScript가 있습니다. 원격 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 또는 대안 에서이 작업을 수행 할 수있는 방법에 대한 제안이 있습니까?
고마워요, 피트
해결책
시도 했습니까?
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;
}
즐기다
(평가는 IE의 객체 방법이 아닙니다). 그래서 뭘 할건데? 답은 독점적 IE 메소드 창을 사용하여 코드를 평가할 수 있다는 것입니다.
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;});
누군가를 돕는 경우 평가 () 기능이 필요하지 않습니다 ...
제휴하지 않습니다 StackOverflow