デバイスレイアウトモードとは:グレーのボタンの役割と、必要になる理由
赤・黄・緑のウィンドウボタンの隣には、スマホの形をしたグレーの4つ目のボタンがあります。普段はまず触ることがありません。ところが、外部ディスプレイ上でのクリックを受け付けない同意バナーやサインイン欄が現れることがあり、そんなときこそこのグレーのボタンの出番です。このページでは、そうしたページで何が起きているのか、そしてわずか4秒ほどで回避する方法を説明します。
何が起きているのか
本アプリを含め、iOS上のあらゆるブラウザはAppleのWebKitエンジンを使うことが義務付けられています。これは誰かが手を抜いた結果ではなく、プラットフォームのルールです。iOS版のWebKitはタッチ入力を前提にした挙動をしており、2台目の画面上で合成カーソルによってページが操作されている場合、その前提が崩れてしまいます。
この摩擦は埋め込みフレームに集中して現れます。あるサイトが別のドメインのiframe内に自身の一部を読み込んでいる場合、そのフレームはサンドボックス化されており、ブラウザエンジン自体の入力経路を通じてしかイベントを受け取りません。Cookie同意管理ツールはこの仕組みを使っています。決済フォーム、IDプロバイダーのサインイン欄、埋め込み動画プレイヤーも同様です。外部ディスプレイ上で発生したクリックが、内部まで届かないことがあるのです。
これはサイト側が意図せず起こしていることでもありません。機密性の高い操作要素をクロスドメインのフレーム内に隔離するのは、意図的な不正対策です。ページ内で動く自動化スクリプトが「支払う」や「サインイン」を勝手に押すことができないようにするためです。この仕組みはよく機能しますが、その分、2台目の画面から来る正当なカーソル操作まで一緒に弾いてしまうことがあります。
XeOSは、こうした事態をできる限り減らすための工夫を重ねています。クリックはShadow DOM(クローズドなシャドウルートを含む)を通してヒットテストされるため、ほとんどのCookieバナーはこれでカバーできます。フォーカスも、入れ子になった子要素ではなく正しい編集可能ホストに向けられるため、チャットやメモアプリのテキストフィールドも問題なく動作します。しかし、合成入力を拒むクロスオリジンのフレームは、アプリ側では乗り越えられない壁です。
回避策は、たった4秒
接続を外したり、そのページをあきらめさせたりする代わりに、XeOSはそのウィンドウを、完璧に操作できる画面、つまりあなたのiPhone自体に渡します。
- ウィンドウの隅にあるグレーのスマホボタンをクリックします。
- そのページが、通常のタッチ操作レイアウトのままiPhoneやiPad自体の画面に表示されます。
- うまくいかなかった操作を行います。バナーへの同意、サインインボタンのタップ、カード情報欄への入力など。
- iPhone側の戻るボタンをタップすると、ウィンドウは元あった場所そのままに外部ディスプレイへ戻ります。
ページが再読み込みされることはありません。表示位置もスクロール位置も、入力途中の内容もそのまま維持されます。
縦向きか横向きか?
ページをiPhone上でどちらの向きで表示するかは選べます。初回セットアップ時に確認され、設定からいつでも変更できます。
物理マウスを使っているなら横向きがおすすめです。その画面を操作している間、より広い横幅を活用できます。オンスクリーンのトラックパッドを使っているなら縦向きを選びましょう。すでにその向きで端末を持っているはずだからです。
どんなときに必要になるか
実際に必要になるのは、限られたいくつかの状況です。サードパーティの同意管理ツールによるCookie・同意バナー。フレーム内のIDプロバイダーに処理を委ねるサインインフロー(「〜でサインイン」といったボタンが典型例です)。まさに上記の理由から決済処理業者のフレーム内に置かれる決済入力欄。そして、地図、予約カレンダー、チャットのポップアップなど、周囲のページとは異なるドメインから読み込まれる埋め込みウィジェット。
それ以外、つまりサイト本体やそのメニュー、フォーム、動画などは、外部ディスプレイ上で通常どおり動作します。
まずはこちらを試してください。グレーのボタンに頼る前に、この2つを試すだけで、手強いページの多くが意外にも解決します。⋯ › Load mobile version of siteは、フレームを多用したデスクトップレイアウトをよりシンプルなモバイル版に切り替えてくれることがあり、単純な再読み込みも思った以上に効果があります。数秒試してもどちらも効果がなければ、無理に粘らずグレーのボタンを使いましょう。
これは不具合ではありません
クリックを受け付けないページは、XeOSが実装し忘れた機能ではありません。iOSのすべてのアプリが使用を義務付けられているブラウザエンジンの境界であり、このアプリのアップデートでは動かせません。なぜなら、そのレイヤーはアプリの制御が及ばない領域だからです。アプリにできるのは、その迂回を短く、損失なく済ませることだけです。
そして実際、その迂回はごく短いものです。iPhone側でワンタップするだけで、すぐに大画面へ戻ってこられます。
XeOS: External Display Browserは、あらゆるモニター、テレビ、プロジェクターの上で、iPhoneやiPadを完全なデスクトップに変えます。
よくある質問
切り替えると、入力した内容は失われますか?
いいえ。ページは再読み込みされません。同じ動作中のページがもう一方の画面に表示され、そのまま戻されます。
何度でも自由に切り替えられますか?
はい、回数による制約や不利益は一切ありません。
これはデスクトップ全体に影響しますか、それとも1つのウィンドウだけですか?
このボタンは、クリックしたウィンドウにのみ作用します。それ以外はすべて外部ディスプレイ上にとどまります。
アプリ側でもっとリアルなクリックをシミュレートすればいいのでは?
それを拒んでいるのはフレーム自体の境界であり、その境界はまさにプログラムによる入力が機密性の高い操作要素に届かないようにするために存在しています。サンドボックスの内側からこれを打ち破ることはできませんし、正当なアプリが試みるべきことでもありません。


