logo       

Re: Eval Limitations in IE7: msg#00227

java.dwr.user

Subject: Re: Eval Limitations in IE7

Mike,
This is not common across IE 7. It depends on the scripting engine. You can check this via the following:

<html>
<body>
<script>
/*@cc_on @*/
function GetScriptEngineInfo(){
var s;
s = ""; // Build string with necessary info.
s += ScriptEngine() + " Version ";
s += ScriptEngineMajorVersion() + ".";
s += ScriptEngineMinorVersion() + ".";
s += ScriptEngineBuildVersion();
return(s);
}

alert("Javascript version is "+@_jscript_version+" build "+@_jscript_build);
alert(GetScriptEngineInfo());
</script>
</body>
</html>

I don't see the problem you mention. I am on Version 5.7, build 5730.

Quoting Mike Cantrell <m.j.cantrell-Re5JQEeQqe8AvxtiuMwx3w@xxxxxxxxxxxxxxxx>:

DWR uses a lot of evals to de-serialize data into javascript data
structures. After experiencing several odd errors in IE7 with DWR and large
sets of data, I started to do some digging. It seems that IE7 limits the
number of variables that can be assigned in a single eval to 327687 (the max
value of a signed short). If you cross that threshold, it gives you a
generic 'Syntax Error' message.

The following code demonstrates the problem:

function StringBuffer() { this.buffer = []; }

StringBuffer.prototype.append = function(string) {
this.buffer.push(string);
return this;
}

StringBuffer.prototype.toString = function() {
return this.buffer.join("");
}



var max = 32768;
testEval();

function testEval() {
var sb = new StringBuffer();

for (var i=0; i < max; i++) {
sb.append("s" + i + " = 'foo';");
}
eval(sb.toString());
}

I've opened a support case with MS but I don't have high hopes of them
changing the behavior (I'm assuming that it's intentional). The most I'm
hoping for is a little better error message.

With that said, is there any hope of seeing DWR less reliant on large evals
in the future?


<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise