All,

I am currently developing a UserJS "plug-in" for Opera in Linux using verision 9.21, build 641. I have encountered some bizarre problems and have been able to isolate and reproduce one using the code posted below. The basic issue throughout my code (and reproduced below) is that a command may either not execute, may execute incorrectly, or may execute differently depending on whether or not an alert() precedes it. Using Firefox, preceding the alert(hidden.contentDocument) command with another alert does not change anything (as well it shouldn't).

Has anyone else encountered this or have any suggestions? I cannot afford to have random alerts throughout my code (obviously).

Thanks in advance!
Louis

<html>
<body>

<script type="text/javascript">


var hidden = document.createElement('iframe');
hidden.src = "http://www.opera.com";
hidden.id = "iframe"
document.body.appendChild(hidden);
// if the below alert is commented out, the alert(hidden.contentDocument) command displays an alert box saying "null".
// if the below alert is not commented out, the alert(hidden.contentDocument) command displays an alert box saying "[object HTMLDocument]".
//alert("stuff") 
alert(hidden.contentDocument)

</script>


</body>
</html>

Where is the semicolon that belongs after each alert statement? You have a run-on statement.

The next statement is not executed because the semicolon is missing. The interpreter thinks the statement is not over yet. It then finds it doesn't know what to do with the improper code it finds, and skips to the next semicolon.

Some interpreters incorrectly ignore missing semicolons when it is "obvious" that a new statement has been started. They should not do that. And you should never count on it happening.

Midimagic,

Thanks a lot for the clarification. I am new to Javascript and was under the impression that semicolons were optional. Some are there because of my C++ habits.

Thanks again,
Louis

Javascript standards don't mandate semicolons but always make sure you put them because there are many browsers out there who would like to suck your project in.

That's a difference between Java and JavaScript.

Actually, there are certain places in JavaScript where semicolons are required (between statements), some places where they are optional (before a close brace), and some places where they are prohibited (before an else).

> Actually, there are certain places in JavaScript where semicolons are required
Here you are talking about the syntax (for example the for loop) which mandates semicolon be placed. In Javascript as long as statements are separated by whitespaces (newlines) it shouldn't be a problem, though older / non-complaint browsers balk at it.

This article has been dead for over six months. Start a new discussion instead.