Skip to content

Limitations

dynamis edited this page Mar 3, 2023 · 31 revisions

WebViewer 制限事項

WebViewer (Amethyst) ビルドの主な制限事項をまとめています。

Gecko の制限事項

Amethyst に限らない制限事項については Gecko Embedded Wiki のページを参照してください。

WebViewer の設計上の制限事項 (仕様)

WebViewer は Web コンテンツのビューアでありブラウザーではないため、ブラウザーの実装としてサポートするような機能には対応しません。 組込用途では無効化することも多い、利用者の個人情報・プライバシー情報の取得や送信を含め、Mozilla や Google のサーバーを利用する機能は無効化しています。

  • Firefox ブラウザーから削除されている UI やブラウザ機能の例
    • ロケーションバー、ツールバー、ブックマークバー、サイドバー、メニューバー、右クリックメニューなどは削除済み
    • ショートカットキーについても (Backspace キーによる「戻る」を除き) 削除済み
    • 削除したメニューから開くウィンドウ・タブであるブックマーク、履歴の管理画面や、設定 (about:preferences)、内部設定 (about:config)、アドオンの管理 (about:addons) ページなどは起動時引数として URL 指定して開くことは可能だがその動作は保証しない
    • 実機端末上での開発ツールの利用はサポートしない (リモートデバッグによる開発を推奨)
  • Mozilla や Google のサービスの API キーやサーバーへのデータ送信が必要な機能は無効化している
    • セーフブラウジング、証明書の検証、ルート証明書の更新、Geolocation API、プッシュ通知 など Mozilla や Google のサーバーを利用する機能
    • これらの機能を Firefox 同様に利用可能にしたい場合、Amethyst のパッチを一部外して独自にビルドする必要あり
  • 複数のウィンドウやタブを必要とするコンテンツはサポートしない (タブのサポートは WebViewer ではなくブラウザーアプリが実装する機能)
    • window.open() などの別ウィンドウや別タブを開くコード
    • <a href="..." target="_blank"> のように target 属性で別ウィンドウで開くことを指定したリンク
    • 認証画面などを別のウィンドウ・タブで開いて行うような実装をしているコンテンツ
    • 同時に複数のウィンドウを開いて連係して動作する実装をしているコンテンツ
    • 動画再生サイトでのピクチャーインピクチャー機能はサポートしない
    • Presentation API はサポートしない (動作する可能性はあるが検証・保証しない)
  • フルスクリーン固定の単一ウィンドウビルドであることによる制限
    • ネイティブの別ウィンドウを伴う機能はサポートしない: ファイルピッカー <input type=file>、カラーピッカー <input type=color>、日付ピッカー <input type=date>、ファイルダウンロードダイアログ (Content-Type が HTML/TXT/JSON などブラウザが直接描画するもの以外を開く操作) などは背面に隠れると操作不能になる
    • Firefox ビルドではフルスクリーン固定で使う場合/バージョン以外は該当しないが、Gecko の制限事項 ページでの説明も参考に

WebViewer の実装上の制限事項

ブラウザーでなければサポートできないものではないが、現在の Gecko/Firefox の設計や制限事項に起因して、現時点での WebViewer で制限事項としているものや、Firefox とは異なる挙動になっているもの。

  • ロケーションバーなどに表示されるポップアップパネルの表示を伴う機能はサポートしない
    • 呼び出し時にユーザーによる明示的な許可の確認やデバイス選択を行う Web APIs (事前許可済みであれば利用可能)
    • ユーザによる明記許可の確認やデバイスの選択を行う UI をメインウィンドウ上のオーバーレイなどとして実装すれば事前許可無くとも利用可能となるが、現時点では未対応
  • メインウィンドウの UI 実装を最小化したためネイティブのダイアログや別ウィンドウを伴う機能
    • 警告や確認ダイアログを表示する機能。例えば alert()confirm() はダイアログが表示され OK ボタンを押せば閉じられるが、間違ってコンテンツウィンドウ側にフォーカスを戻すとダイアログがフルスクリーン表示されているブラウザの背後に表示され操作不能になる
    • 警告や確認ダイアログをネイティブダイアログではなくメインウィンドウ上のオーバーレイなどとして実装すれば利用可能となるが、現時点では未対応
  • Gecko 78 以降に於ける select 要素によるピッカーをサポートしない
    • Firefox の select 要素の内部実装の変更があり、WebViewer 側の実装変更を行わなければ動作しない。将来対応実装する可能性はあるが検討中。

WebViewer 限定の不具合または既知の問題 (解消予定)

現時点のビルドでは以下の制限があるが、これらについては解消できるよう開発していく方向で調整中。

  • 未解決の既知の問題はありません