Closed
Bug 9192
Opened 25 years ago
Closed 25 years ago
if (document.layers) else if (document.all) stops script execution
Categories
(Core :: DOM: Core & HTML, defect, P3)
Tracking
()
VERIFIED
WORKSFORME
People
(Reporter: martin.honnen, Assigned: vidur)
Details
Attachments
(1 file)
1.61 KB,
text/html
|
Details |
It is not possible to write backwards compatible code through object checking with the M7 build as it stops script execution when encountering the following: <SCRIPT> function ObjectCheck () { if (document.layers) { alert('nn4'); } else if (document.all) { alert('ie4/5'); } else if (document.getElementById) { alert('nn5'); } } alert('before check'); ObjectCheck(); alert('after check'); </SCRIPT> The alert before the check fires but then is silence. Please get that cleared asap as it is an essential js check used to write cross browser code.
Assignee | ||
Updated•25 years ago
|
Status: NEW → RESOLVED
Closed: 25 years ago
Resolution: --- → WORKSFORME
Assignee | ||
Comment 1•25 years ago
|
||
Hmm...works for me in the viewer. There seems to be a problem with alerts in apprunner, but that's a different bug.
Reporter | ||
Comment 2•25 years ago
|
||
I am using the viewer not the apprunner. And the alerts are just there to demonstrate that the script execution dies. I have been using the if (document.layers) { } else if (document.all) { } else if (document.getElementById) { } check in two real examples and it failed to execute my nn5 targetted code as the script seems to die when encountering the document.layers check before. Here's one of the real examples. The code for NN5 works if I take out the if (document.layers) check <HTML> <HEAD> <TITLE> </TITLE> <STYLE> </STYLE> <SCRIPT> function zoomImage (imgName, width, height) { if (document.layers) { var img = document[imgName]; if (!img.overLayer) { img.overLayer = new Layer (width); img.overLayer.left = img.x; img.overLayer.top = img.y; } img.overLayer.clip.width = width < img.width ? img.width : width; img.overLayer.clip.height = height < img.height ? img.height : height; img.overLayer.bgColor = document.bgColor; img.overLayer.document.open(); img.overLayer.document.write('<IMG NAME="' + img.name + '" SRC="' + img.src + '" WIDTH="' + width + '" HEIGHT="' + height + '">'); img.overLayer.document.close(); img.overLayer.visibility = 'show'; } else if (document.all || document.getElementById) { document[imgName].width = width; document[imgName].height = height; } } </SCRIPT> </HEAD> <BODY> <A HREF="javascript: void0 " ONCLICK="zoomImage('anImage', 200, 200); return false;">zoom(200, 200)</A> | <A HREF="javascript: void 0" ONCLICK="zoomImage('anImage', 20, 20); return false">zoom(20, 20)</A><BR> Kibology inside <BR> <BR> All for Kibology <IMG NAME="anImage" SRC="kiboInside.gif"> </BODY> </HTML>
Updated•25 years ago
|
Status: RESOLVED → VERIFIED
Comment 3•25 years ago
|
||
I modified the script provided by reporter as following since alert still is not working. <SCRIPT> function ObjectCheck () { if (document.layers) { document.writeln('nn4'); } else if (document.all) { document.writeln('ie4/5'); } else if (document.getElementById) { document.writeln('nn5'); } } document.writeln('before check'); document.writeln('<br>'); ObjectCheck(); document.writeln('<br>'); document.writeln('after check'); </SCRIPT> And its giving me proper results. I'm not able to reproduce the bug. The second piece of code provided by Martin [Reporter] is not working. The reson its not working is because the javascript URLs are not working properly. There is a sperate bug for it and its bug# 1646. Thanks martin for this investigation. Marking bug as verified.
Reporter | ||
Comment 4•25 years ago
|
||
Reporter | ||
Comment 5•25 years ago
|
||
I still have that bug occuring and I still think that accessing document.layers and/or document.all is stopping script execution as the three examples (first two buttons fail while last succeeds) show. I am using the viewer of the M7 win release. And I get the second example which you claim does not work because of the javascript: hrefs to work as intended if I leave out the document.layers/document.all check or put them after the document.getElementById check. The javascript: void 0 onclick hrefs are just a workaround as plain javascript: hrefs do not work. But I have numerous examples of links <a href="javascript: void 0" onclick="//some js here; return false;"> which execute as intended with M7 (and elder builds as well). So the links are not causing the problem.
Comment 6•25 years ago
|
||
Martin you are correct. There is something wrong with document.layers and what is wrong is its returning null. Attachment you provided works for me. I mean it does not stop execution of script. So even though that attachment is working still document.layers should not return null. You might be getting this error because of that. For attachemnt you provided, all three buttons work fine for me. It does not stop script from execution. What I'm doing now is, I'm reopening this bug and putting its dependency on bug# 9378 [Which is for document.layers returning null]. I won't verify this bug untill that bug is resolved. I really appreciate your investigation. I would be really happy to hear any opinion from you if I'm wrong in this by anyway. I'll verify this bug once bug# 9378 is resolved.
Updated•25 years ago
|
Status: REOPENED → RESOLVED
Closed: 25 years ago → 25 years ago
Comment 7•25 years ago
|
||
Actually Martin, I talked to vidur about this bug and since we are not going to support document.layers in 5.0 and after looking at your script it seems that you are also expecting document.layers to return null. According to your script if (document.layers) { alert('nn4'); } else if (document.all) { alert('ie4/5'); } else if (document.getElementById) { alert('nn5'); } You are also expecting document.layers to return null. It is actually returning null. I tried your attachment also and for me, exection of script is occuring on all three buttons. I don't know why you are facing this error. I tried on several platforms, including win-95 which you are claiming, but it works fine everywhere. I'm going ahead and marking this bug as verified. I'll appreciate your comments.
Reporter | ||
Comment 8•25 years ago
|
||
If the attached code works for you I am not pressing it as a bug. As for document.layers returning null I expected it to return undefined though a javascript check if (object.property) does not distinguish between null and undefined. I am waiting for the next milestone release, if I still get the bug I am bugging you here again.
Comment 9•25 years ago
|
||
Not a problem martin, If you see this bug again in next milestone release, let me know.
Updated•5 years ago
|
Component: DOM → DOM: Core & HTML
You need to log in
before you can comment on or make changes to this bug.
Description
•