https://browser.engineering/index.html Web Browser Engineering Pavel Panchekha & Chris Harrelson Twitter * Blog * Patreon * Discussions * Introduction * Part 1: Loading Pages * Part 2: Viewing Documents * Part 3: Running Applications * Part 4: Modern Browsers Web browsers are ubiquitous, but how do they work? This book explains, building a basic but complete web browser, from networking to JavaScript, in a couple thousand lines of Python. The cover for Web Browser Engineering, from Oxford University Press The cover for Web Browser Engineering, from Oxford University Press Pre-order Web Browser Engineering Web Browser Engineering will be published by Oxford University Press before the end of the year. To get it as soon as it's out, pre-order now! Follow this book's blog or Twitter for updates. You can also talk about the book with others in our discussion forum. If you are enjoying the book, consider supporting us on Patreon. Or just send us an email! Introduction 1. Preface 2. Browsers and the Web 3. History of the Web Part 1: Loading Pages 1. Downloading Web Pages URLs and HTTP requests 2. Drawing to the Screen Creating windows and drawing to a canvas 3. Formatting Text Word wrapping and line spacing Part 2: Viewing Documents 4. Constructing an HTML Tree Parsing and fixing HTML 5. Laying Out Pages Inline and block layout 6. Applying Author Styles Parsing and applying CSS 7. Handling Buttons and Links Hyperlinks and browser chrome Part 3: Running Applications 8. Sending Information to Servers Form submission and web servers 9. Running Interactive Scripts Changing the DOM and reacting to events 10. Keeping Data Private Cookies and logins, XSS and CSRF Part 4: Modern Browsers 11. Adding Visual Effects Blending, clipping, and compositing 12. Scheduling Tasks and Threads The event loop and the rendering pipeline 13. Animating and Compositing Smooth animations using the GPU 14. Making Content Accessible Keyboard input, zooming, and the accessibility tree 15. Supporting Embedded Content Images, iframes, and scripting 16. Reusing Previous Computation Invalidation, editing, and correctness Conclusion 1. What Wasn't Covered 2. A Changing Landscape Appendix 3. Glossary 4. Bibliography 5. About the Authors 6. Contributors 7. List of courses taught from this book 8. One-page version (c) 2018-2023 Pavel Panchekha & Chris Harrelson