Simon Willison’s Weblog


40 items tagged “safari”


Simple Push Demo (via) Safari 16.4 is out (upgrade to iOS 16.4 to get it) and the biggest feature for me is mobile support for Web Push notifications. This little demo tool was the first I found that successfully sent a notification to my phone: frustratingly you have to add it to your home page first in order to enable the feature. The site also provides a curl command for sending push notifications through the Apple push server once a token has been registered, which is the crucial step to figuring out how to build applications that can send out notifications to users who have registered to receive them.

# 27th March 2023, 8:48 pm / safari, web-standards, webpush

Web Push for Web Apps on iOS and iPadOS. iOS and iPadOS 16.4 beta 1 finally brings web push notifications to iOS. User’s need to add an app to their home screen and then approve notification access to get this functionality, which also includes the ability for apps to update a badge on their icon. Thankfully you don’t need paid membership of the Apple Developer Program ($99/year) in order to send notifications.

# 17th February 2023, 12:28 am / safari, ios


Supporting logical properties. A frustrating reminder from Jeremy Keith that Safari is not an evergreen browser: older iOS devices (1st gen iPad Air for example) get stuck on the last iOS version that supports them, which also sticks them with an old version of Safari, which means they will never get support for newer CSS properties such as inline-start and block-end. Jeremy shows how to use the @supports rule to hide this new syntax from those older browsers.

# 1st October 2022, 1:03 am / css, jeremy-keith, safari, ios, web-standards


Evolution of <img>: Gif without the GIF (via) Safari Technology Preview lets you use <img src="movie.mp4">, for high quality animated gifs in 1/14th of the file size.

# 4th December 2017, 7:28 pm / gifs, safari, video

Release Notes for Safari Technology Preview 44. The big news is support for the W3C Payment Request API for devices with Apple Pay enabled. Chrome, Firefox and Edge have been working on this as well.

# 15th November 2017, 11:35 pm / safari


Visualizing WebKit’s hardware acceleration. Command line flags for launching Safari (and the iOS simulator) in a way that highlights areas of the screen that are being hardware accelerated—particularly useful if you are using the “-webkit-transform: translate3d(0,0,0)” trick.

# 27th June 2011, 10:31 am / css, ios, safari, webkit, recovered


Surfin’ Safari: Announcing... MathML! MathML is now supported by the WebKit nightlies. Worth checking out for the typographical discussion that’s broken out in the comments.

# 18th August 2010, 1:49 pm / mathml, safari, typography, webkit, recovered

Jeremiah Grossman: I know who your name, where you work, and live. Appalling unfixed vulnerability in Safari 4 and 5 —if you have the “AutoFill web forms using info from my Address Book card” feature enabled (it’s on by default) malicious JavaScript on any site can steal your name, company, state and e-mail address—and would be able to get your phone number too if there wasn’t a bug involving strings that start with a number. The temporary fix is to disable that preference.

# 22nd July 2010, 8:44 am / apple, autocomplete, browsers, exploit, safari, security, vulnerability, recovered

SublimeVideo—HTML5 Video Player. Still a fair way to go (no Firefox support yet, and they plan to add a Flash fallback for IE) but in Safari this is pretty extraordinary. Smooth video, beautiful UI, full window mode and full screen mode in the latest WebKit nightlies. I’d go as far as saying that this is the nicest online video implementation I’ve seen (at least on the Mac).

# 2nd February 2010, 9:50 am / html5, video, webkit, safari, flash

HTML 5 audio player demo. Scott Andrew’s experiments with the HTML5 audio element (and jQuery)—straight forward and works a treat in Safari, but Firefox doesn’t support MP3. Presumably it’s not too hard to set up a fallback for Ogg.

# 1st February 2010, 9:58 am / mp3, ogg, firefox, safari, html5, audio, scott-andrew, javascript, jquery


Dinky pocketbooks with WebKit transforms. Nat used 90 degree CSS transform rotations in print stylesheets for WebKit and Safari to create printable cut-out-and-fold pocketbooks from A4 pages. Very neat.

# 22nd May 2009, 12:33 am / natalie-downe, css, csstransforms, webkit, safari, printstyles, rotation, pocketbooks

Pwn2Own trifecta: Hacker exploits IE8, Firefox, Safari. You just can’t trust browser security: Current versions of Safari, IE8 and Firefox all fell to zero-day flaws at an exploit competition. None of the vulnerabilities have been disclosed yet.

# 19th March 2009, 3:30 pm / pwn2own, browsers, security, firefox, safari, ie, ie8


Gears for Safari Beta. “Chances are it will break your browser. Please proceed with caution.”

# 26th August 2008, 4:27 pm / gears, google, safari, beta

SquirrelFish. WebKit’s JavaScript engine was no slouch, but that hasn’t stopped them from replacing it with a brand new “register-based, direct-threaded, high-level bytecode engine, with a sliding register window calling convention”. It runs 1.6x faster and has the Best Logo Ever.

# 3rd June 2008, 7:57 am / logo, webkit, javascript, safari, squirrelfish, performance, bytecode

Google Gears renamed “Gears”. “We want to make it clear that Gears isn’t just a Google thing. We see Gears as a way for everyone to get involved with upgrading the web platform.” Support for Firefox 3 and Safari is being added and Opera are integrating Gears with both their desktop and mobile browsers.

# 29th May 2008, 12:38 am / gears, google, opera, firefox3, safari

getElementsByClassName pre Prototype 1.6. Older releases of Prototype break in Firefox 3 and Safari 3.1 due to unsafe namespace management—getElementsByClassName is now a browser built-in but with different semantics to the Prototype method of the same name. Prototype 1.6 is fine.

# 26th March 2008, 8:28 am / getelementsbyclassname, javascript, john-resig, firefox3, namespaces, prototype, safari

querySelector and querySelectorAll. WebKit now supports the W3C Selectors API. Expect the various JavaScript libraries to add this as an optimisation to achieve massive speedups (Prototype are already working on it).

# 8th February 2008, 11:21 am / prototype, javascript, safari, webkit, w3c, selectors, libraries, queryselector


Jash: JavaScript Shell (via) An advanced JavaScript interactive shell bookmarklet that works in IE, Firefox, Opera and Safari.

# 9th December 2007, 12:36 pm / gareth-rushgrove, jash, javascript, ie, firefox, opera, safari, bookmarklet, shell

Safari CSS Reference. Official documentation covering the CSS properties supported by Safari, including the -webkit proprietary extensions.

# 22nd November 2007, 11:51 pm / safari, css, documentation, webkit, browsers

Ten New Things in WebKit 3. Does “incremental updates for persistent server connections” for XMLHttpRequest mean Safari now has native support for Comet?

# 16th November 2007, 1:19 am / comet, ajax, javascript, safari, webkit, safari3, xmlhttprequest

HTML5 Media Support in WebKit. WebKit continues to lead the pack when it comes to trying out new HTML5 proposals. The new audio and video elements make embedding media easy, and provide a neat listener API for hooking in to “playback ended” events.

# 12th November 2007, 11:21 pm / media, audio, events, html5, osx, safari, video, webkit, javascript

CSS Transforms. WebKit can now do transforms (scale, rotate, translate and skew) in CSS via a new -webkit-transform property. Transforms behave like position relative in that they don’t affect the layout of the page. You can also provide a full affine transform matrix as a shortcut.

# 26th October 2007, 9:45 pm / matrix, transforms, affinetransformation, graphics, webkit, safari, apple, css, browsers

Site-specific browsers and GreaseKit. New site-specific browser tool which lets you include a bunch of Greasemonkey scripts. For me, the killer feature of site-specific browsers is still cookie isolation (to minimise the impact of XSS and CSRF holes) but none of the current batch of tools advertise this as a feature, and most seem to want to share the system-wide cookie jar.

# 25th October 2007, 7:56 am / greasekit, csrf, javascript, greasemonkey, cookies, safari, security, sitespecificbrowsers, webkit, xss, chris-messina

WebKit Does HTML5 Client-side Database Storage. SQLite strikes again. The WebKit team have included a neat update to their Web Inspector that lets you browse and modify your client-side databases.

# 20th October 2007, 12:03 pm / webkit, apple, safari, sqlite, offline, html5, whatwg, webinspector

Native DOMContentLoaded is coming to Safari. I filed this bug over two years ago. They’ve just committed the resulting patch to trunk.

# 8th October 2007, 1:07 am / javascript, onload, browsers, domcontentloaded, safari, webkit

Multi-Safari. Lets you run multiple versions of Safari on the same Mac. As with the multi-IE hacks, all versions use the same underlying HTTP libraries (which belong to the OS) so the simulation isn’t entirely accurate.

# 5th October 2007, 11:51 pm / multisafari, safari, browsers

DOMContentLoaded for IE, Safari, everything, without document.write. Stuart has taken Hedger’s recent IE technique, combined it with the others and compressed it in to a short-as-possible code snippet that you can paste in to your scripts without having to include the whole of jQuery/YUI/Dojo/Prototype.

# 26th September 2007, 12:19 pm / ondomready, safari, ie, documentwrite, javascript, stuart-langridge, domscripting, unobtrusivejavascript

Some Notes on the YUI Rich Text Editor. Dav Glass explains how he achieved the impressive feat of building a rich text editor widget that also works in Safari.

# 15th August 2007, 8:13 pm / safari, richtext, yui, dav-glass, javascript

WebCore Rendering I—The Basics. Dave Hyatt has started a series of posts explaining the internals of WebCore’s rendering system.

# 10th August 2007, 3:21 pm / dave-hyatt, safari, webcore, internals, browsers, html, css

(somewhat) breaking the same-origin policy by undermining dns-pinning. This is the best technical explanation of the DNS rebinding attack I’ve seen. The linked demo worked for me in Safari but not in Camino.

# 2nd August 2007, 12:53 pm / dnsrebinding, camino, safari, security, samedomain