IFrame を含む Vue コンポーネントがあります。このコンポーネントは、Vuex ストレージを使用して API 呼び出しを行い、IFrame にロードされる SSO に関する情報を取得します。コンポーネントが初めてインストールされるとき、コンポーネントは IFrame に完全にロードされます。ただし、画面を切り替えてコンポーネントを再度インストールすると、SSO が新しいタブに読み込まれます。その後、別の画面に移動すると、再び正常にロードされます。したがって、新しいタブの問題は、コンポーネントがインストールされているときにのみ発生します。
この動作は Safari でのみ発生することに注意してください。それ以外はすべて期待どおりに動作します。
私のコードはこれに非常に似ています。独自の理由により変更する必要があります。
<テンプレート> <div> <フォーム :action="エンドポイント" target="the_iframe" ref="ssoForm" メソッド = "POST" 名前 = "ssoフォーム" id="ssoフォーム" > <入力 id="認証コード" type="非表示" 名前 = "認証コード" :value="認証コード" /> <入力 id="認証アプリURL" type="非表示" 名前 = "認証アプリの URL" :value="authAppUrl" /> </フォーム>
結局、コンポーネントを 1 つ上のレベルに引き上げることになりました。ルートが変更されるたびに、コンポーネントは再ロード/インストールされます。上に移動したので、ロードするのは 1 回だけです。これは修正というより回避策のように見えますが、実際に機能します。