2009-06-26 18 views
1

私はいくつかのjavascriptを持っていて、別のxhtmlページでjavascript "class"を取得しています。この後このeval()呼び出しをIEで動作させるにはどうすればよいですか?

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

がthis.javascriptに取り込まれる、私はそれを評価およびインスタンス化しよう:もちろん

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

を、これが以外のすべてのブラウザで完璧に動作リモートJavascriptを次のようになりますIE。 IEでは、eval行で失敗します。誰も私がIEまたは代替でこの仕事をする方法についての提案を持っていますか?

おかげで、ピート

+1

...、何のeval()関数を必要としませんそのためには 'eval'が必要です。それとも私はそれを誤解しましたか? – nyuszika7h

答えて

1

あなたは試してみました:

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

を...?

+0

IEには評価がありません。私はwindow.execScriptでこれを試してみましたが、残念ながらうまくいきません。 – slypete

+0

IEには評価がありません!もちろんあります!evalは推奨されませんが、JS/EcmaScript仕様の一部であり、IE3(JScriptバージョン1)以降のIEに含まれています。http://msdn.microsoft.com/en-us/library/2z6exc9e.aspx –

+0

evalが利用できないという認識を持つために何か間違ったことをする。 –

1

(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); 
} 
+0

ありがとうございますが、私はすでにこれを試しました。 Microsoftのドキュメントによれば、このメソッドは常にnullを返します。 http://msdn.microsoft.com/en-us/library/ms536420(VS.85).aspx – slypete

+0

はい、でもグローバルスコープにアクセスすることはできます(私の編集を参照) – Janie

+0

私はアクセス "it"私はあなたがevallingによって作成したオブジェクトを参照しています。 – Janie

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

これは(すなわちを意味する)は良いのブラウザと悪いものと働い:

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

0

をお楽しみください。 IEでeval()と同じ問題があり、 "window.execScript"の関数がうまく動作しませんでした。 JavaScript(JavaScript)の配列を私のページのPHP(私の場合はphp)から取得した解決策は、JSONを使用することでした。

// myfeed.php

return json_encode($myarray); 

// myjs.js

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

それは誰にも役立ちます場合、これはあなたがいない

関連する問題