Authors: XU Zhengyi
This document is a starting point for engaging the community and standards bodies in developing collaborative solutions fit for standardization. As the solutions to problems described in this document progress along the standards-track, we will retain this document as an archive and use this section to keep the community up-to-date with the most current standards venue and content location of future work and discussions.
Split screen scenarios are becoming more and more prevalent in today's world. In addition to dual screen devices (ie. physical split screen), browsers such as Edge, Whale and Arc ship split tab (ie. virtual split screen) features. When using virtual split screen in a browser, there are multiple cases in which users want to open links and view them side-by-side with the source page (see the Use Cases section for examples). Currently, there is no option for web authors to target a link to open directly into a split tab. The current navigation targets, such as _blank, _self, _parent, _top, are insufficient to solve this problem.
This explainer proposes a solution to allow web authors to open links into a split tab.
The feature is intended to be used by any website that wants to open a link into a split tab. Here are some scenarios in which this can be useful to users:

This proposal supports opening links in a split tab by:
Adding a new value called _split to the target attribute on the anchor element and the target parameter of the window.open API. (The name _split is not final; suggestions are welcome!)
On supported browsers:
noopener-like behavior for links opened with target _split. In other words, window.opener for links opened in a split tab should be null.navigator.splitTabSupported returns false, _split should fallback to behaving like target _blank. UAs may apply their own criteria (ex. screen size, user settings) to decide whether split tab is available or not.Examples:
<a target="_split" href="https://www.example.com">Open in split tab</a>
// Open url in split tab.
window.open("https://www.example.com", "_split");
Update the 7.3.1.7 Navigable target names spec as follows:
| Keyword | Ordinary effect |
Effect in an iframe with...
|
|
|---|---|---|---|
sandbox="" |
sandbox="allow-top-navigation" |
||
_split |
split tab or new | split tab or maybe new | split tab or maybe new |
Update The rules for choosing a navigable spec as follows:
_blank" or "_split"..._split", set name to "_blank".new with no opener"._split", then:
_blank".split tab with no opener"._blank" or "_split", then set targetName to name.Adding a splitTabSupported property to the Navigator object. navigator.splitTabSupported returns a Boolean value indicating whether the browser supports a virtual split screen configuration or not.
if (navigator.splitTabSupported) {
// The browser does support split tab feature.
}
target attribute on anchor elements and the target parameter on window.open, therefore should be easy for web developers to understand.navigator.splitTabSupported could only be accessed by JS, this means the authors of the website have to set the target via JS and not via HTML. One possible mitigation is setting a cookie when user first opened the website and then the server could know the client support this feature and could set it via HTML on next visit._split without setting noopener, an opener will be set.
noopener when using _split. A note could be added to the spec for this.navigator.splitTabSupported before setting the target._split, the navigation will be done in that frame.
target value to be the name of a sub-frame (See the reference here). Any existing sites that have a frame named _split would expect that frame to be navigated when a link with that target is clicked. Even though the spec mentions that names starting with an underscore are reserved for special keywords, if a site is using _split in this way, it would be broken once _split is used for split tab navigations. Implementors can add a use counter to identify whether such sites exists, and if they do, a different name instead of _split could be used.navigator.splitTabSupported exposes the information that user's browser supports split screen._split.To avoid issues with fallback on unsupported browsers, an alternative solution is adding a new attribute like split-tab to the anchor element and params of window.open(). The split-tab attribute will have no effect on unsupported browsers.
target attribute.target and split-tab, it is unclear which should take priority and may be tricky to specify._split? It is unclear if fallback to _blank is always desirable._split target behave differently inside sandboxed iframes? If so, should we add a new value to the sandbox attribute to allow this, ex. allow-split-tab-navigation?