Do not launch new windows while users type
F60 is a documented failure, so it describes a defect and not a technique. The pattern is a new window opening because somebody typed into a field. The published example is a postal code field that fills in and produces a window of local advertising, which shows what the pattern is usually for. There is an exemption written into it and it comes with a condition attached. Error reporting is allowed, so a window that opens to say what went wrong is not this failure, as long as it carries a button that closes it and returns focus to the field the user was in. That focus return is what makes the exemption work rather than a loophole. A better answer than either sits in the page itself. Put the hint next to the field, tie it to the input, and link onward for anybody who wants more.
How we find it in an audit
Reviewers find every text input, change the value in each, and watch for a window. Where one opens, we look at what is inside it. If it is an error message, we check for a close control that returns focus to the field, and if focus lands anywhere else the exemption does not apply. Automated tools can find window.open inside a key or input handler. Whether the window is an error report is reading.
How affected users experience it
Typing is not a request for anything. A screen reader user enters a reference number, the last character lands, and their software is now reading a window they did not open. They were mid-task, mid-field, and possibly mid-word. Getting back means finding the window they left and then finding the field they were in, and the field will often have lost what they typed. Someone using speech input has the same interruption with an extra cost, because dictation into the wrong window produces text nobody wanted.
Passes vs. fails
Passes
<label for="ref">Reference number</label>
<input id="ref" aria-describedby="ref-hint">
<p id="ref-hint">Printed at the top of your letter. <a href="/help/reference-numbers">Where to find your reference number</a></p>Fails
<input id="ref" onkeyup="window.open('/help/reference-numbers', 'help')">How this gets tested
The W3C publishes test rules that define what a checker looks for here.
- Meta element has no refresh delayA tool can check this
- Meta element has no refresh delay (no exception)A tool can check this
The other techniques filed under this rule
16 guides on this site are filed under 3.2.5 Change on Request. W3C documents this one as a failure of that rule, so it describes a way the rule gets broken rather than a way to pass it.
- G76sufficientUpdate content only when the user asks
- G110sufficientMake client-side redirects instant, not timed
- H76sufficientMake meta refresh redirects instant, never timed
- H83sufficientWarn users when links open new windows
- SCR19sufficientNever change context when a select changes
- SCR24sufficientOpen new windows only when the user asks
This guide is our interpretation of W3C technique F60: Failure of Success Criterion 3.2.5 due to launching a new window when a user enters text into an input field. W3C publishes its techniques as guidance rather than as the standard, and says so on every one of them. The success criterion is what conformance is measured against, and a technique is one documented way to meet it.