cari

Rumah  >  Soal Jawab  >  teks badan

iframe dalam komponen Vue dibuka dalam tab baharu (Safari sahaja) ----- kadangkala

Saya mempunyai komponen Vue yang mengandungi IFrame. Komponen ini menggunakan storan Vuex untuk membuat panggilan API untuk mendapatkan maklumat tentang SSO yang akan dimuatkan dalam IFrame. Kali pertama komponen dipasang, ia dimuatkan dengan sempurna ke dalam IFrame. Walau bagaimanapun, apabila saya menukar skrin dan memasang komponen semula, SSO dimuatkan dalam tab baharu. Kemudian jika saya pergi ke skrin lain ia dimuatkan seperti biasa semula. Jadi isu tab baharu hanya berlaku sekali-sekala apabila komponen dipasang.

Perhatikan bahawa tingkah laku ini hanya berlaku dalam Safari. Semua yang lain berfungsi seperti yang diharapkan.

Kod saya sangat serupa dengan ini. Mesti diubah suai atas sebab proprietari.

<template>
  <div>
  <form
    :action="endPoint"
    target="the_iframe"
    ref="ssoForm"
    method="POST"
    name="ssoForm"
    id="ssoForm"
  >
    <input
      id="AuthCode"
      type="hidden"
      name="AuthCode"
      :value="authorizationCode"
    />
    <input
      id="AuthAppUrl"
      type="hidden"
      name="AuthAppUrl"
      :value="authAppUrl"
    /> 
    
  </form>
  <iframe
      width="100%"
      name="the_iframe"
      height="300"
      style="display: flex"
      id="the_iframe"
      frameborder="0"
    ></iframe>
  </div> 
</template>

<script>
import types from "path/to/types"
export default {
  data() {
    return {
      endPoint: null,
      authorizationCode: null,
      authAppUrl: null,
      errorStatus: false,
      error: null
    }
  },
  methods: {
    async getSSOModel() {
      try {
        var data = await this.$store.dispatch(
          `store/${types.GET_SSO_MODEL}`
        )
        this.endPoint = data.endPoint
        this.authorizationCode = data.authorizationCode
        this.authAppUrl = data.authAppUrl 
        await this.$nextTick()
        this.$refs.ssoForm.submit()
      } catch (error) { 
        this.error = error
        this.errorStatus = true
      }
    }
  },
  async mounted() {
    await this.getSSOModel()
  }
}
</script>

P粉238355860P粉238355860301 hari yang lalu377

membalas semua(1)saya akan balas

  • P粉052724364

    P粉0527243642024-03-20 10:10:05

    Saya akhirnya mengambil komponen itu ke tahap yang lebih tinggi. Setiap kali laluan berubah, komponen dimuat semula/dipasang. Saya mengalihkannya supaya ia hanya perlu dimuatkan sekali. Ini kelihatan lebih seperti penyelesaian daripada pembetulan, tetapi ia berfungsi.

    balas
    0
  • Batalbalas