Hacker News new | ask | show | jobs
by forgotmypw3 2369 days ago
If you happen to end up in those environments again, I would appreciate it if you take a look at my prototype web-based message board.

It's designed for compatibility, and I've tested a lot of Netscapes and IE4, but nothing on Win311 yet.

If you want to leave a comment, you can do so right on the message board. It should work, more likely with JS off.

1 comments

> It should work, more likely with JS off.

Many of the 3.1-era browsers didn't have a concept of JS yet. If you're relying on noscript at all it won't work.

I did try and check if this was the case, but both links in your profile that it could have been lead to "not found" dreamhost sites.

I feel obligated to comment, so that others are not led astray by parent comment, which is INCORRECT:

<noscript> works just fine in pre-JS browsers, at least all of the ones I've tried.

It works exactly as designed: Text between <noscript> and </noscript> is displayed in browsers without JS enabled (or supported).

I am not aware of any browsers where this is not the case, and I've tested in many, including Mosaic 1.x-3.x, NN 1.x-4.x, Opera up to 3.62, and others.

(You probably happened to visit my site during an upgrade. Sorry about that.)

Why would notscript not work on a browser that has no concept of JS?
Because the <noscript> element isn't valid for the stricter form of HTML that they use. Invalid elements didn't used to show up.
From what I recall of that era, it's the exact opposite: invalid elements (like <noscript>) are simply ignored, and their contents shown. That's how <noscript> works: newer browsers which understand JavaScript know the <noscript> element and ignore its contents; older browsers which do not understand JavaScript don't know the <noscript> element so its contents are shown. The same trick is used for <noframes>: browsers like Netscape which understand frames don't show the contents of that element, while other browsers which don't understand <frame> and <frameset> will show the content of the <noframes> element, so it can be used as a fallback.

Strict validation of HTML came later with XHTML, but AFAIK all browsers which understand XHTML also understand JavaScript.

XHTML came after HTML 4.0, so it had its advent around the rise of JavaScript's popularity.

However, HTML 2.0, which you can find specified here [0], and it specifies the "ignore" behaviour. Short of spinning up an old VM, I think I'll trust that my memory hasn't failed me.

From RFC 1866:

> markup in the form of a start-tag or end-tag, whose generic identifier is not declared is mapped to nothing during tokenization. Undeclared attributes are treated similarly...

> For example: > <div class=chapter><h1>foo</h1><p>...</div> > => <H1>,"foo",</H1>,<P>,"..."

[0] https://www.w3.org/MarkUp/html-spec/

If that was true, why did <script> tags have that horrible hack where the contents started with <!-- to hide from old browsers?