どのように私はこのevalの()IEで動作するように呼び出しを得ることができますか?

StackOverflow https://stackoverflow.com/questions/1050840

  •  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の行で失敗します。誰もが、私は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のオブジェクトメソッドではありません)。じゃあ何をすればいいの?答えは、あなたがevalのコードに独自の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);
}

最悪、本当に最悪になる場合は、このような何かが動作する可能性があります:

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

私はIEでのeval()の同じ問題を抱えていたし、「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