Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Error: Attempt to run compile-and-go script on a cleared scope

Since upgrading to Firefox 4.0, I've noticed that I'm occasionally getting an error in the console stating:

attempt to run compile-and-go script on a cleared scope

The only information I can find about this on the net currently is on the mozilla groups forum, where it is suggested that it's something to do with session restoring. In my case, though I haven't been able to reliably reproduce the error, it happens at any time, not just after a restore.

What's the deal? How do I stop the error?

like image 834
nickf Avatar asked Mar 25 '11 13:03

nickf


3 Answers

For me (Firefox 11, Firebug 1.9.1) it happens sometimes after I refresh the page (either F5 or CTRL+F5) while debugger is paused on a breakpoint.

The solution seems to be to continue the execution of the script, and refresh the page only when Firebug is not paused.

like image 58
jakub.g Avatar answered Oct 12 '22 02:10

jakub.g


In my case, it was document.write method causing the problem on Firefox 4, 5, 6 on Windows. Linux versions are unaffected. What I had to do is to overwrite document.write method.

I aware that document.write shouldn't be used these days, but deployJava.js, a standard Java Applet deployment script written by Sun/Oracle, is using it. Google is using it in Google AdSense ads. document.write is everywhere.

<script>
    var documentWriteOutput = '';
    var got = document.write;
    document.write = function(arg) { documentWriteOutput += arg; }
</script>
<script src="badScriptThatIsUsingDocumentWrite.js"></script>
<script>
    runBadScriptThatIsUsingDocumentWrite();
    document.write = got;
    // Do whatever you want with the documentWriteOutput
    // e.g. $('#somewhere').html(documentWriteOutput);
</script>

I hope this helps. However, I saw lots of "solutions" on the Internet that didn't work for me. It may mean that "Attempt to run compile-and-go script on a cleared scope" is a Firefox JavaScript engine problem/bug.

like image 44
Nowaker Avatar answered Oct 12 '22 01:10

Nowaker


I've noticed that this error can happen if you write to the document with document.write after the document has completed loading (e.g. in a function called from JQuery's $(document).ready() method). When this happens, it seems that Firefox discards the old document and writes a new one. I don't know if this is new behavior or not. It seems that when you try to operate on the old document, e.g. with JQuery selectors, you get this error. For me, fixing the script in question to not call document.write after the document had loaded fixed the error.

like image 32
Nate C-K Avatar answered Oct 12 '22 03:10

Nate C-K