50 lines
1.6 KiB
HTML
50 lines
1.6 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<title>Eval'ed Function losing scope</title>
|
|
</head>
|
|
<body>
|
|
<script type="text/javascript" charset="utf-8">
|
|
if (self.testRunner) {
|
|
testRunner.dumpAsText(self.enablePixelTesting);
|
|
testRunner.waitUntilDone();
|
|
}
|
|
|
|
var counts = [0, 0, 0];
|
|
(function() {
|
|
var code = [
|
|
"var div = document.createElement('div');",
|
|
"document.body.appendChild(div);",
|
|
"window.printFoo = function (counts) {",
|
|
"++counts[1];",
|
|
"div.innerHTML += 'foo ';",
|
|
"++counts[2];",
|
|
"};"
|
|
].join('\n');
|
|
eval(code);
|
|
})();
|
|
|
|
function callPrintFoo() {
|
|
window.printFoo(counts);
|
|
}
|
|
|
|
setInterval(function () {
|
|
if (counts[0] == 200) {
|
|
var text;
|
|
if (counts[0] == counts[1] && counts[1] == counts[2])
|
|
text = "TEST PASSED";
|
|
else
|
|
text = "TEST FAILED: counts = " + counts;
|
|
var div = document.createElement('div');
|
|
document.body.appendChild(div);
|
|
div.innerHTML = text;
|
|
if (self.testRunner)
|
|
testRunner.notifyDone();
|
|
}
|
|
++counts[0];
|
|
callPrintFoo();
|
|
}, 5);
|
|
</script>
|
|
</body>
|
|
</html>
|