Closed Bug 124751 Opened 23 years ago Closed 23 years ago

Conditional Comments on Mozilla?

Categories

(Core :: DOM: HTML Parser, enhancement, P5)

x86
Other
enhancement

Tracking

()

VERIFIED WONTFIX

People

(Reporter: max, Assigned: harishd)

References

Details

(Whiteboard: WONTFIX?)

ie has some usefull toll, which works with their broser upward to 5.0
they called this "Conditional Comments":
http://msdn.microsoft.com/workshop/author/dhtml/overview/ccomment_ovw.asp

how could i have a workaround that only shows a portion of code in the newer
mozilla / netscape browser and not in ie
(this would be usefull for only showing to mozilla/netscape the sidebar feature)

a little bit like this one but not shown in netscape 4.x
<!--&{document.layers!=null};
You are using NS 4 or above!
-->


thanks for your help, i found the ie conditional comments usefull perhaps you
could add their syntax to mozilla. what do you think?
with best regards
maks
there are no conditional comments, but there is a workaround
navigator.userAgent can be used to check the browser and depending on the return 
value you can write the code which applies to particular browser.
Severity: normal → enhancement
Status: UNCONFIRMED → NEW
Ever confirmed: true
Priority: -- → P5
<!--&{document.layers!=null};
You are using NS 4 or above!
-->

That's incorrect.  Neither NS 6.x nor Mozilla support that document.layers.

In any case, how is that better than writing:

<script language="JavaScript">
if (document.layers != null)
  document.write("You are using NS 4!")
</script>

The second way it is clear you are writing JavaScript code.  Your proposed way
could be using VBScript, Tcl, who knows?

More importantly, the standard <script> works in ALL browsers which support
scripts.  What you proposed only currently works in MSIE.  Even if Mozilla does
support it, it is non-standard and there will be countless other browsers which
do not support it.  Our support of this non-standard feature will encourage it's
use which will be bad for the web.

Comments are meant to be comments, not scripts.  If you want to use a script,
then enclose it in script tags.
Severity: enhancement → normal
Priority: P5 → --
Christopher, 
we are using the priority field for setting the importance of the bug. Please do 
not change the priority field to null. If you disagree with the priority set by 
anyone, feel free to change it :) 
Severity: normal → enhancement
Priority: -- → P5
thanks for your usefull posts and comments.
i can understand your point of view focussing on standards,
but the force of the related function in the ie is that it works only on that
browser even without javascript!
so the argument that it would not work on all browsers turns out to be an
argument in favour of this conditional comments.
Stummalla, that is because of a midair collision gone bad.  I didn't touch those
fields but they got changed anyway.  Sorry.
Maks, on the contrary.  If that works in IE _without_ JavaScript then I would
consider that a privacy invasion.  If I turn off JavaScript, I do not want any
pages to be able to access anything about my scripting environment.  I said no
JavaScript, and I don't want pages to be able to learn my navigator.appName or
document.layers or anything about my browser.

That "feature" defeats the whole purpose of being able to turn JS off.  If you
want to access a JS property, you should be forced to use conventional <script>
methods and it's access restrictions, if any.
Christopher, I didn't try it on IE without JavaScript, but the official
Microsoft tells us that you do not need any scripting. So "Conditional Comments"
should work even with deactived JS!
"It is not always necessary to use scripting and DHTML when working with
conditional comments, and when no scripting is used in a Web page, no scripting
engine needs to be loaded."
maks, (document.layers!=null) is a javascript statement. if such a conditional
comment doesn't require javascript to be enabled to be evaluated, then it's a
serious privacy issue, because you're effectively running potentially dangerous
javascript even when it is disabled.
Fabian, the following downlevel-hidden conditional comment shown on the
microsoft page (link above) checks for you ie browser version:
<!--[if IE 5]>
<p>Welcome to Internet Explorer 5.</p>
<![endif]-->
I don't know much about JS so I don't know if you meant that the statement above
(working with deactived JS) is equivalent to (document.layers!=null) with
actived JS.
If I might interrupt...

The HTML comment syntax is very well defined.  The sequence of characters "<!"
does not mean "I get to make up what I do with it" but rather has a very
particular meaning in SGML and XML applications.

Looking at the examples listed on the page you reference:

<!--[if expression]> HTML <![endif]-->

Any browser that's claiming to be HTML-compliant should hide the content, unless
"HTML" contains the characters "--"

<![if expression]> HTML <![endif]>

In this case the [if expression] and [endif] should be interpreted as SGML
markup (possibly being ignored if they make no sense).

I fail how we can implement this feature (especially the "downlevel-hidden"
part) without completely breaking standards-compliant comment parsing.  For
example, what does IE do with the following?

<!--[if IE 6]>
This is a test -- a test.
<![endif]--> Red ball.

If the words "Red ball" are visible in IE6 in CSS1Compat mode that's bad.

In the words of Arjun Ray when this came up on the W3C lists (February 2000), "Phony Baloney".  The right way to do this sort of thing is a PI or markedsection, certainly not a comment.  Given that this doesn't work in Opera, Lynx,&etc., will probably generate Issues with quirks comment parsing (as bz pointsout), and is generally a stupid abuse of markup, I suggest WONTFIX.The idea of delivering different parts of a single document to differentbrowsers/platforms using only markup is not entirely uninteresting, but as usual,MS failed to RTFM; I can't see that the mixed blessings of easier (but possiblymore wrong) browser-sniffing are worth the effort of implementing this kludge.Over to Parser, which is somewhat more apt as a component.
Assignee: jst → harishd
Component: DOM HTML → Parser
QA Contact: stummala → moied
Whiteboard: WONTFIX?
Um, I'm far from convinced that the world would be a better place if Mozilla
chose to support a syntax this messed up. I vote for WONTFIX.
I don't think it's worth the effort to fix this. WONTFIX.
Status: NEW → RESOLVED
Closed: 23 years ago
Resolution: --- → WONTFIX
verified WONTFIX
Status: RESOLVED → VERIFIED
One way to attack IE conditional comments without polluting the comment parsing
logic might be through feature request:

Bug 86504 (HTML Filter with Regular Expressions)

I also see some parser filtering stuff in htmlparser/public/nsIParserFilter.h --
is this being used by anything?
I have a project at http://iestreamconv.mozdev.org that filters out ie-style
conditional comments before they hit the parser.
*** Bug 217581 has been marked as a duplicate of this bug. ***
You need to log in before you can comment on or make changes to this bug.