メインコンテンツへスキップ

Iframe ベースのレンダリング

ページのリロードを避けるため、すべての PHPRequestHandler の応答はiframe内でレンダリングされる必要があります。 システム全体はメインの index.html が存在している間しか機能しないことを忘れないでください。メインアプリのリロードは、どんな犠牲を払ってでも避けるべきです。

上記のアプリの例では、index.php は以下のHTMLをレンダリングします。

<a href="page.php">page.php へ移動</a>

index.html<iframe> ではなく <div> でレンダリングされたと想像してみてください。そのリンクをクリックするとすぐに、ブラウザは index.html から page.php へ移動しようとします。しかし、index.html はワーカースレッド、PHPRequestHandler、そしてそれらをサービスワーカーに接続するトラフィック制御を含む、PHP アプリケーション全体を実行します。ここから移動すると、アプリケーションは破壊されてしまいます。

ここで、同じリンクが含まれる iframe を考えてみましょう。

<iframe srcdoc='<a href="page.php">page.php へ移動</a>'></iframe>

今回はブラウザでリンクをクリックして、iframe内page.phpを読み込みます。PHPアプリケーションが実行されるトップレベルのindex.htmlは影響を受けません。そのため、@php-wasm/webの設定にはiframeが不可欠です。

Crash reports

Playgroundでは、クラッシュレポートが自動的に収集されることはありません。その代わり、ブラウザでインスタンスの実行に失敗した場合に、ユーザーにクラッシュレポートの提出を促します。

レポートにはログ、説明、URL が含まれており、ユーザーは送信前にレポートを変更できます。

Logger API がそこから処理を行います。このシンプルな REST API はデータを検証し、Making WordPress #playground-logs Slack チャンネル に送信します。

iframe の注意事項

  • target="_top" はまだ処理されていないため、target="_top" を含むリンクをクリックすると、作業中のページがリロードされます。
  • iframe から発生する JavaScript ポップアップは、必ずしも表示されるとは限りません。