다크 모드
Popup Mode Example
별도의 브라우저 창으로 열리는 MSAP Chat SDK Popup 모드 사용 예제입니다.
HTML 예제
html
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>MSAP Chat - Popup Mode Example</title>
</head>
<body>
<h1>MSAP Chat Widget - Popup Mode</h1>
<p>Popup 모드에서는 채팅 위젯이 별도의 브라우저 창으로 열립니다.</p>
<h2>사용 방법</h2>
<pre><code><script src="https://sdk.turacocloud.com/msap-ai-chat.min.js"></script>
<script>
const widget = MSAPChat.init({
applicationKey: 'your-key',
mode: 'popup'
});
</script></code></pre>
<!-- MSAP Chat Widget SDK -->
<script src="https://sdk.turacocloud.com/msap-ai-chat.min.js"></script>
<script>
const widget = MSAPChat.init({
applicationKey: 'test1',
mode: 'popup',
});
</script>
</body>
</html>코드 설명
1. SDK 스크립트 로드
html
<script src="https://sdk.turacocloud.com/msap-ai-chat.min.js"></script>CDN을 통해 SDK를 로드합니다.
2. Popup 모드로 위젯 초기화
javascript
const widget = MSAPChat.init({
applicationKey: 'test1',
mode: 'popup',
});mode: 'popup'을 지정하여 팝업 모드로 초기화합니다.
3. 토글 버튼
초기화 후 우측 하단에 토글 버튼이 자동으로 생성됩니다.
- 버튼 클릭 시 팝업 창이 열립니다
- 다시 클릭하면 팝업 창이 닫힙니다
Popup 모드 특징
장점
- 대화 유지: SSR 환경에서 페이지 전환 시에도 대화가 끊기지 않습니다
- 멀티태스킹: 웹사이트를 탐색하면서 동시에 채팅할 수 있습니다
- 넓은 공간: 별도 창으로 더 넓은 채팅 공간을 제공합니다
주의사항
- 브라우저의 팝업 차단 설정을 확인해주세요
- 모바일 환경에서는 자동으로 inline 모드로 전환됩니다
- 팝업 창을 닫으면 대화가 종료됩니다
프로그래밍 방식 제어
토글 버튼 없이 프로그래밍 방식으로 제어할 수도 있습니다.
javascript
const widget = MSAPChat.init({
applicationKey: 'test1',
mode: 'popup',
showToggleButton: false, // 토글 버튼 숨기기
});
// 팝업 창 열기
document.getElementById('openBtn').addEventListener('click', () => {
widget.open();
});
// 팝업 창 닫기
document.getElementById('closeBtn').addEventListener('click', () => {
widget.close();
});
// 상태 확인
if (widget.isOpen()) {
console.log('팝업 창이 열려있습니다');
}커스터마이징
팝업 창의 크기를 지정할 수 있습니다.
javascript
const widget = MSAPChat.init({
applicationKey: 'test1',
mode: 'popup',
width: 500, // 팝업 창 너비
height: 800, // 팝업 창 높이
});사용 시나리오
Next.js 프로젝트
javascript
// pages/_app.js 또는 layout에서
useEffect(() => {
const widget = MSAPChat.init({
applicationKey: process.env.NEXT_PUBLIC_CHAT_KEY,
mode: 'popup',
});
return () => widget.destroy();
}, []);페이지 라우팅 시에도 팝업 창이 유지되어 대화가 끊기지 않습니다.
Nuxt.js 프로젝트
vue
<!-- plugins/msap-chat.client.js -->
<script>
export default defineNuxtPlugin(() => {
if (window.MSAPChat) {
window.MSAPChat.init({
applicationKey: useRuntimeConfig().public.chatKey,
mode: 'popup',
});
}
});
</script>다음 단계
- Basic Example - 기본 예제
- Custom Example - 커스터마이징 예제
- Options - 전체 옵션 목록
- API Methods - API 레퍼런스
라이브 데모
실제 동작을 보려면 라이브 데모 페이지를 방문하세요.