overture
dom-examples
overture | dom-examples | |
---|---|---|
3 | 86 | |
708 | 3,160 | |
0.3% | 2.1% | |
7.9 | 7.7 | |
24 days ago | 8 days ago | |
JavaScript | JavaScript | |
MIT License | Creative Commons Zero v1.0 Universal |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
overture
-
CSS lengths in Gecko are limited to 17,895,697 pixels (2010)
Fastmail shows lists of messages using a progressively-loaded list, where each item is of a consistent height (88px for me, but it can be a few other values too, depending on your configuration—I think 51px is the default). This means that the scrollbar is real and accurate, and you can seek to any point in your mailbox easily (provided your platform allows interacting with the scrollbar, which largely means “on desktop platforms”). But this does cause problems for very large mailboxes, because browsers only support finite lengths.
A few years back, while I worked at Fastmail, we had a ticket come in from an IE user that they could suddenly only access the first few messages in their mailbox. Trouble was they’d gone over IE’s limit, and IE just ignored the entire height declaration in that case, and so you ended up with only the initially-rendered list items available.
The limits I found:
• Firefox: ignores declarations that resolve to a value higher than 17,895,697 pixels (which is a bit more than 2²⁴).
• IE: ignores declarations that resolve to a value equal to or higher than 10,737,418.23 pixels (2³⁰ − 1 hundredth pixels).
• WebKit: clamps values somewhere around 2²⁵ (~33,554,432) pixels; clamping means you don’t need to worry about it so much, since that was the best workaround in other browsers anyway.
And so we ended up with the workaround code at https://github.com/fastmail/overture/blob/41cdf36f3e7c8f0dd1... (the Firefox check was of much older vintage, I just added the IE case). (Nowadays, the IE part is gone again because IE is gone, hooray!)
So yeah, it actually only took about 200,000 messages in the list to hit this limit and fall over, or subsequently just make the bottom of the mailbox inaccessible. 200,000 messages in one mailbox is uncommon, but not at all unrealistic, especially in an “All mail” sort of mailbox.
-
Defensive CSS
One uncommon place where clipping is justified at the design level: lazy-loading but finite lists. I’ll use Fastmail’s webmail (on which I worked a few years back) as an example. I could load a list of a hundred thousand emails, and each message in the list is 88px tall (containing four lines of text—approximately, sender and date, subject, and two lines of preview, with truncation on each), so the list container is made to be 8,800,000 pixels high¹, and I can use its scrollbar to immediately jump to any place, and it will figure out which messages to fetch and render based on the scroll position. If the subject line were wrapped, which would be nice at times, you’d lose this ability: you’d have to guess the approximate height of each element, and your scroll positions will be imprecise and you’ll have to make messy adjustments from time to time. Overall it generally won’t be too bad so long as there’s not too much variation in them, but it’s definitely still inferior.
¹ Browser do have limits on how large you can make containers, and handle excess in different ways. IE had the lowest threshold of failure at around ten million pixels, beyond which point it would ignore values; the workaround I implemented in https://github.com/fastmail/overture/commit/8d01c74d8c5d4ae0... came as a direct result of a customer reporting that scrolling was broken in IE in their mailbox with a couple of hundred thousand emails. Firefox breaks a little after 2²⁴ pixels, also ignoring values, so it’s still covered in https://github.com/fastmail/overture/blob/0c9828a5b77ad14383... (note the IE stuff is gone because IE is dead! :-) ). Chrome accepts larger values, but clamps them to about 2²⁵ pixels.
-
Server-Sent Events: the alternative to WebSockets you should be using
It is, however, interesting to note that Fastmail’s webmail doesn’t use EventSource, but instead implements it atop fetch or XMLHttpRequest. An implementation atop XMLHttpRequest was required in the past because of IE, but it still deliberately doesn’t use EventSource; my foggy recollection from a few years ago is that it had to do with control over timeout/disconnect/reconnect, and handling Last-Event-ID, plus maybe skipping browser bugs in some older (now positively ancient and definitely unsupported) browsers. The source for that stuff is the three *EventSource.js files in https://github.com/fastmail/overture/tree/master/source/io.
dom-examples
- Web APIs
-
9 Web API's que fazem mágica ⚡🧙🏻♀️🧙🏾♂️✨
Fonte: MDN web docs
-
Web OTP Api - One byte Explainer
References MDN Chrome Docs
-
The Ladybird Browser Project
> if writing a browser today is in fact easier than both writing AND maintaining a browser a decade back.
Probably not. Yeah we have web standards and some idea of how to architect it, but the total set of APIs and HTML/CSS/JS features a browser supports is probably changing faster than the Ladybird team can actively implement it. The API surface is just impossibly large compared to 10 or 15 years ago. Look at all of these: https://developer.mozilla.org/en-US/docs/Web/API
-
SSR React in Go
I added polyfills for the Web APIs used in the React code.
-
At Least Skim The Manual
In addition to pure JavaScript, there are hundreds of Web APIs documented at MDN. These APIs cover everything from the DOM to Web Workers with great detail.
-
Help me understand Web APIs (specifications and interfaces)
I'm reading MDN Web Docs on Web APIs. There are two basic sections, specifications and interfaces.
-
Can you make your own JavaScript by implementing ECMAScript standard?
The biggest difference is usually found in what non-ECMAscript standard JS web apis or features are implemented in different browsers. Here's a list of typical web APIs, and for many of them there is a compatibility table at the bottom detailing which browser do or do not support it. https://developer.mozilla.org/en-US/docs/Web/API
-
Using Web APIs to Create a Camera Application
Documentation of Web APIs and interfaces is located on the MDN (Mozilla Developer Network) website. The term "Web API" can refer to browser or server APIs. In this article, it refers to Browser APIs.
-
Playing with the Gamepad API
The second one was an afternoon of "boredom." I wanted to develop, but I was running out of ideas. So, I decided to explore something new. I navigated to the Web APIs page on MDN, and something caught my eye on the letter g: Gamepad API.
What are some alternatives?
wa-automate-nodejs - 💬 🤖 The most reliable tool for chatbots with advanced features. Be sure to 🌟 this repository for updates!
FiraCode - Free monospaced font with programming ligatures
just - A library of dependency-free JavaScript utilities that do just one thing.
hasses
WHATWG HTML Standard - HTML Standard
markwhen - Make a cascading timeline from markdown-like text. Supports simple American/European date styles, ISO8601, images, links, locations, and more.
public-apis - A collective list of free APIs
rsocket-java - Java implementation of RSocket
fuse - Multiplayer Online Standard
stable-socket - A web socket that reconnects.
vimium - The hacker's browser.