954,206 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

Opera Javascript bug? (works in Firefox)

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>
bball7210
Newbie Poster
2 posts since Jun 2007
Reputation Points: 10
Solved Threads: 0
 

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
Nearly a Senior Poster
3,319 posts since Jan 2007
Reputation Points: 730
Solved Threads: 182
 

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

bball7210
Newbie Poster
2 posts since Jun 2007
Reputation Points: 10
Solved Threads: 0
 

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.

~s.o.s~
Failure as a human
Administrator
11,938 posts since Jun 2006
Reputation Points: 3,281
Solved Threads: 733
 

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).

MidiMagic
Nearly a Senior Poster
3,319 posts since Jan 2007
Reputation Points: 730
Solved Threads: 182
 

> 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.

~s.o.s~
Failure as a human
Administrator
11,938 posts since Jun 2006
Reputation Points: 3,281
Solved Threads: 733
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You