Web pages, in their default form, are just text files. You can see what these text files look like if you right-click on the page and click on the “View Source” option. That’s what your computer is actually downloading from the Internet when you open up a website.
The web browser is able to take a file like this and read it as a set of instructions on how to construct the version of the webpage you actually see. Like baking a cake from a cookbook recipe.
Here’s the thing, though… those instructions are a little… loose. There’s a defined standard dictating what those instructions are *supposed* to mean ([someone else has already mentioned it](https://www.reddit.com/r/explainlikeimfive/comments/yz39bz/eli5_why_do_some_websites_work_on_specific/iwxv5g0/)), but just like any rule or law, it’s open to some interpretation on *exactly* what it could mean. And intentionally so. The standard only tries to define the most important bits, and leaves the fine details up to whoever tries to follow the instructions.
Web browsers are programs that read those funny files and turn them into the web pages you can see. The way they go about doing that is something that each web browser development team figures out on their own, independently, from the ground-up. Ideally, they try to follow every part of that standard laid out for them, but anything else not talked about in the standard is totally up to them. This includes the way certain elements look and feel, even though on paper they all function mostly the same as all the others
Despite there being a centrally agreed-upon standard, that’s all it really is. A *standard*. Not a *rule*. The standard is less of a rulebook and more of a *goal*. The dev team for a browser should want to work on their product until it *gets* there. It might not be all of the way there. There are some parts of the standard that it simply doesn’t meet, because the devs can’t find the time to put it in, or because meeting it would require them to go back and completely redesign other choices they made in the past and they aren’t ready to make changes like that. So some features go unimplemented or unsupported for long durations of time even after many of their competitor browsers have since implemented them. This is the bulk of why certain websites work in some browsers but not others.
It gets even hairier when a web browser decides it wants to do something completely non-standard. That is, invent a totally new feature that isn’t in the standard at all. Just because it thinks it would be a cool thing to have. Website designers can take note of this, and decide to try and take advantage of those special features, because they may also think the features are cool to have. But since only one browser added them, the feature will only work in *that* browser. Any other browser that tries to access the website won’t be able to use that feature, because they didn’t implement it. Generally, most websites that want to be accessible to as many people as possible will avoid experimental browser-specific features like this, so they don’t alienate any users. If the feature proves very popular, though, the browser devs can take it up with the standards people and be like, “Hey, we had this idea and it seems really useful, can we make it part of the standard?” And they might agree. At that point, it (or some compromised version of it) becomes standardized, and other browsers will be coerced to make their own versions of it. This is one way web standards can innovate.
Latest Answers