惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

F
Full Disclosure
Stack Overflow Blog
Stack Overflow Blog
H
Help Net Security
Microsoft Azure Blog
Microsoft Azure Blog
The GitHub Blog
The GitHub Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Recorded Future
Recorded Future
Y
Y Combinator Blog
Cloudbric
Cloudbric
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
S
Schneier on Security
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
C
Cybersecurity and Infrastructure Security Agency CISA
TaoSecurity Blog
TaoSecurity Blog
Security Latest
Security Latest
N
News and Events Feed by Topic
Hacker News - Newest:
Hacker News - Newest: "LLM"
D
DataBreaches.Net
Security Archives - TechRepublic
Security Archives - TechRepublic
H
Hacker News: Front Page
C
Cisco Blogs
L
LangChain Blog
aimingoo的专栏
aimingoo的专栏
Recent Commits to openclaw:main
Recent Commits to openclaw:main
V
Vulnerabilities – Threatpost
L
LINUX DO - 最新话题
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Google Online Security Blog
Google Online Security Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
A
About on SuperTechFans
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Jina AI
Jina AI
C
CXSECURITY Database RSS Feed - CXSecurity.com
Schneier on Security
Schneier on Security
T
Tenable Blog
N
News and Events Feed by Topic
W
WeLiveSecurity
有赞技术团队
有赞技术团队
AI
AI
爱范儿
爱范儿
大猫的无限游戏
大猫的无限游戏
Latest news
Latest news
T
The Blog of Author Tim Ferriss
S
Security Affairs
Know Your Adversary
Know Your Adversary
Simon Willison's Weblog
Simon Willison's Weblog
G
GRAHAM CLULEY
Google DeepMind News
Google DeepMind News
The Cloudflare Blog

Henri Sivonen’s pages

Parin vuoden tutkimattomuus crates.io: Rust Package Registry Asiakirjatonta toimintaa It’s not wrong that "🤦🏼‍♂️".length == 7 Koulutartuntojen tilastointimenettely Perusteasiakirjoja hallussapitämättä ikärajoitettu Asiantuntijat ja nukkuva vallan vahtikoira Koronapassilausunto Suppealla tietopohjalla ohimeneväksi väitetty Text Encoding Menu in 2021 The Text Encoding Submenu Is Gone An HTML5 Conformance Checker Not Part of the Technology Stack Browser Technology Stack Bogo-XML Declaration Returns to Gecko A Look at Encoding Detection and Encoding Menu Telemetry from Firefox 86 Why Supporting Unlabeled UTF-8 in HTML on the Web Would Be Problematic Rust Target Names Aren’t Passed to LLVM Toimintamalli Activating Browser Modes with Doctype Johtopäätöksiä mallin rakenteesta Tehtävänmäärittelyä kirjoittamatta ja kuolemia laskematta laumasuojamallinnettu Character Encoding Menu in 2014 Erillissuosituksen tarpeettomuudesta yleissuosituksen poikkeukseksi? STM:n maskiaikajana Rust 2021 Oma-aloitteisesti mallinnettu Kokopinovaatimuksin kilpailutettu chardetng: A More Compact Character Encoding Detector for the Legacy Web Varauksia paisutellen tiedotettu Perusteasiakirjoitta tiedotettu Always Use UTF-8 & Always Label Your HTML Saying So IME Smoke Testing The Validator.nu HTML Parser About the Hiragino Fonts with CSS It’s Time to Stop Adding New Features for Non-Unicode Execution Encodings in C++ Rust 2020 The Last of the Parsing Quirks About about:blank Rust 2019 a Web-Compatible Character Encoding Library in Rust How I Wrote a Modern C++ Library in Rust Using cargo-fuzz to Transfer Code Review of Simple Safe Code to Complex Code that Uses unsafe A Rust Crate that Also Quacks Like a Modern C++ Library #Rust2018 No Namespaces in JSON, Please A Lecture about HTML5 Julkisesti luotettu varmenne ikidomainille TLS:ää (SSL:ää) varten -webkit-HTML5 Lists in Attribute Values The Sad Story of PNG Gamma “Correction” If You Want Software Freedom on Phones, You Should Work on Firefox OS, Custom Hardware and Web App Self-Hostablility HTML5 Parser Improvements ARIA in HTML5 Integration: Document Conformance (Draft, Take Two) Schema.org and Pre-Existing Communities Lowering memory requirements by replacing Schematron HTML5 Parsing in Gecko: A Build Introducing SAX Tree NVDL Support in Validator.nu HOWTO Avoid Being Called a Bozo When Producing XML An Unofficial Q&A about the Discontinuation of the XHTML2 WG Thoughts on HTML5 Becoming a W3C Recommendation Four Finnish Banks Training Users to Give Banking Credentials to Another Site Unimpressed by Leopard Sergeant Semantics The Content Sink Inheritance Diagram – 2006-06-30 What is EME? About Points and Pixels as Units The Performance Cost of the HTML Tree Builder Social Media Impression Management Openmind 2006 Performance Mistake XHTML and Mobile Devices WebM-Enabled Browser Usage Share Exceeds H.264-Enabled Browser Usage Share on Desktop (in StatCounter Numbers) HTML5 Parser-Based View Source Syntax Highlighting Vendor Prefixes Are Hurting the Web Accept-Charset Is No More Dualroids Writing Structural Stylable Document in Mozilla Editor ISO-8859-15 on haitallinen Hourglass The Scientific Method According to Hixie Maemo Source Code Karpelan lukkovertaus ontuu Digitaalisesta arkistoinnista ARIA in HTML5 Integration: Document Conformance (Draft) XHTML—What’s the Point? (Draft, incomplete) Mac OS X Browser Comparison HOWTO Spot a Wannabe Web Standards Advocate An Idea About Intermediate Language Trees and Web UI Generation Thoughts on Using SSL/TLS Certificates as the Solution to Phishing Bureaucracy Meets the Web Europe Day HOWTO Establish a 100% Literacy Rate What to Do with All These Photos? Charmod Norm Checking Validator Web Service Interface Ideas DTDs Don’t Work on the Web EFFI’s Day in Court Speaking at XTech
The spacer Element Is Gone
Henri Sivonen · 2012-09-17 · via Henri Sivonen’s pages

Today, I landed a patch that made the HTML5 parser in Gecko unaware of the HTML spacer element. (XUL spacer not affected!)

There had previously been a willful violation of the HTML5 specification that made the parser treat the spacer element as a void element. This willful violation used to be necessary, because the layout system in Gecko supported the spacer element as an element that had no rendered children and it would have been bad to make <spacer> hide whatever came ofter it.

Ms2ger wrote a patch that removed the spacer support from layout. This made it possible to remove the willful violation of the specification from the parser.

What was the spacer element and why remove it?

The spacer element was introduced by Netscape as a means of achieving the effect of a single-pixel layout GIF without actually having to use the GIF. That is, spacer just took some amount space in layout. If the meta elements are any indication, Adobe PageMill and perhaps even early versions of Adobe GoLive generated pages that used the spacer element.

Now, one might wonder if removing support for an element breaks the Web. It turns out that it doesn’t in this case. Even though Netscape reimplemented the spacer element in Gecko, the other major browser engines left the spacer element unsupported. Where spacer is still in use, it rarely makes any layout difference. If it made a difference, the authors of the pages would probably notice the difference between browsers and use something other than spacer.

Philip Taylor put together a list of pages that use the spacer element by analyzing a large set of pages downloaded by following links from the Open Directory Project in 2007. I flipped through these pages in 2009 in both Firefox (when it still supported the spacer element) and in Safari (which doesn’t support spacer). On the vast majority of pages, there was no visible difference. On one page, there was a very slight disadvantage from WebKit not supporting spacer. However, the difference was a missing one-pixel-thick border that no user would know was missing without comparing the page in two browsers at the same time.

But the disadvantage also went to the other way and slighly more seriously. Jeff Muizelaar found a site where the layout was worse in Gecko due to a spacer element. The spacer element made the page wider than necessary. Perhaps the element had been forgotten there and the author had recently tested the page in a browser other than Firefox.

Since supporting the spacer element most of the time carried neither an advantage nor a disadvantage and there was a data point showing a disadvantage in one case and no data showing a compelling advantage in any case, it made sense to simplify things and to remove support making Gecko behave the same as other engines on this point.

What’s so special about this?

The removal of support for an HTML element from a major browser engine is a very rare event. After all, all browsers support the plaintext and xmp elements that were already obsolete by the time the HTML 2.0 spec was written.

Netscape discontinued support for the layer, ilayer, nolayer, multicol and basefont elements with the move from Netscape 4 to Netscape 6. However, this wasn’t a removal of support from an engine. Those elements were never implemented in the new engine when the old engine was abandoned. (The Netscape hype element doesn’t count, because it was reportedly platfrom-specific.) Other than that, Wikipedia claims that IE dropped wbr support in version 5.0 (the parser in IE still recognizes wbr as a void element) and Geoffrey Sneddon says Opera has dropped support for the bq element. That seems to be about it!

Let’s celebrate the HTML5-propelled march of progress towards interoperability. The chance to remove browser war-era elements doesn’t come often. Thanks to everyone involved!