v153 · navigation · feature removal
The keywords that are real
The HTML standard reserves exactly four target keywords: _self, _parent, _top, _blank. Everything else is a frame name. Sweep the real ones and the non-standard one through the same frame tree and the difference stops being a claim about specifications and becomes a difference you can watch.
Sweep the targets
Each row navigates for real, from a fresh copy of the frame tree. _top and _blank are resolved but not navigated — one would replace this page and the other would open a window — and both are marked as such rather than quietly skipped. _CURRENT is in the sweep because keyword matching is ASCII case-insensitive: if a browser still carries the non-standard keyword, the shouted spelling reaches it too, and the row will say so.
Results
| target | in the standard? | frame that moved | what happened |
|---|---|---|---|
| Run the sweep. | |||
Resolutions that need no navigation
Three facts about the tree, read by identity comparison rather than by moving anything. They are what make the sweep above readable.
| check | result |
|---|---|
| Run the sweep. | |
why a fifth keyword is a problem
A target value that is not a keyword is a name, and a name that matches no frame in the tree causes a new browsing context to be created. That is a well-defined fallback, and it is the same in every engine — which is what lets a site pick frame names freely.
A single engine adding a keyword breaks that. In Chrome before this removal, a frame legitimately named _current could never be targeted from within its own tree, because the name resolution never got as far as looking. The same markup navigated the source frame in Chrome and the named frame everywhere else. Removing the keyword makes the name resolvable again, and costs a measured 0.00009% of page loads the old behaviour.
Names beginning with an underscore are still a bad idea in your own markup: the standard reserves the shape for future keywords, so a frame named _current is only safe for as long as nobody standardises that word. The point of the removal is that Chrome should not be inventing the words on its own.