🌐 웹개발

[Nuxt3 | Vue] iframe 사용 이슈

두_두 2025. 2. 14. 13:39

1. iframe 내부인지 외부인지 판별하기

같은 코드여도 iframe 내부에서의 동작과 외부에서의 동작을 구분해야 하는 경우가 있다.

if (window.self !== window.top) {
    // iframe 내부에서 실행될 함수
} else {
    // iframe 안에 있지 않음!
}

2. 로드 후 onMounted, onNuxtReady 실행 안됨

iframe 내에서 주소 이동을 했을 때 바로 실행되는 함수를 만들기 위해 onNuxtReady, onMounted를 사용해도 적용되지 않았다. ➡️ iframe의 src가 변경되면, iframe 내부에서는 Nuxt의 초기화가 다시 실행되지 않기 때문에 onNuxtReady가 실행되지 않는다.

따라서 iframe@load를 추가하여 iframe이 로드된 후 실행될 수 있도록 코드를 작성해야 한다.

예시 코드:

<template>
  <div>
    <iframe ref="iframeEl" :src="iframeSrc" @load="onIframeLoad" width="600" height="400"></iframe>
  </div>
</template>

<script setup>
import { ref } from "vue";

const iframeSrc = ref("https://example.com");

const onIframeLoad = () => {
  console.log("iframe이 완전히 로드됨!");
};
</script>

3. CORS 오류

하필이면 다른 도메인 웹뷰를 끌어오면, iframe 내 기능을 사용할 때 문제가 발생한다.

 

1) 뒤로가기, window.location.href 안 먹힘

router.push로 페이지를 이동하니까, 뒤로가기 기능이 엉망이 되었다.

이때는 window.location.href = '이동할 링크'를 사용하여 history가 정상적으로 쌓이도록 처리해서 해결했다.

 

 

 

 

일단 여기까지.

 

 

 

728x90
댓글수0