2023年2月27日月曜日

レンダリング・ツリーにチェックボックスが表示されたときの対処

 ページ・デザイナの右ペインに表示されるレンダリング・ツリーに、チェックボックスが現れる場合があります。以下のような状態です。

タッチ操作が有効なデバイスの場合上記の表示になりますが、タッチ操作が有効でないデバイスでも上記のように表示される場合があります。

原因と対処について、Scott WesleyさんがForumsに投稿されていました。

https://forums.oracle.com/ords/apexds/post/checkboxes-appearing-next-to-components-in-page-builder-5413

TwitterでMagaly Irahetaさんが、ブラウザのセッション・ストレージにあるORA_WWV_apex.core.userHasTouchedというキーを削除すると直ると教えてくれています。



セッション記憶域に保存されるAPEX.userHasTouchedについては、APEXのリリース・ノートのプライバシに関する通知に記載があります。

フォーラムに書かれている原因と、Twitterでの対処方法について確認してみます。

ページ・デザイナを開いてチェックボックスが表示されている状態で、ブラウザの開発者ツールを開きます。アプリケーション・タブを選択し、セッション・ストレージの内容を確認します。

キーORA_WWV_apex.core.userHasTouchedに値yが設定されていることが確認できます。


このキーを削除してページ・デザイナをリロードすると、チェックボックスは表示されなくなります。


キーORA_WWV_apex.core.userHasTouchedが作成されるタイミングですが、開発者ツールにてデバイス・エミュレーションを有効にし、どこでも良いので画面上でポインタをクリックすると、キーが作成されます。


キーを削除しても上記の操作を行うと、再度ORA_WWV_apex.core.userHasTouchedが作成されてチェックボックスが表示されます。

開発者ツールでの操作以外に、JavaScriptコンソールより以下を実行し、キーORA_WWV_apex.core.userHasTouchedを削除する、または、nを設定することができます。

window.sessionStorage.removeItem("ORA_WWV_apex.core.userHasTouched");

または

window.sessionStorage.setItem("ORA_WWV_apex.core.userHasTouched","n");

タッチ操作ができないデバイスで、チェックボックスが表示されるケースでは上記で対応できるはずです。ページ・デザイナでデバイス・エミュレーションを行う必要はないためです。

タッチ操作が有効なデバイスの場合は、ページ・デザイナの画面に触った時点でタッチ操作が有効と認識されて、それ以降はタッチスクリーン対応の表示に切り替わるようです。