Sweetalert2 Modal Box를로드 한 후 외부 스크립트 초기화를위한 튜토리얼
동적 컨텐츠 및 외부 스크립트 초기화의 과제
현대 웹 개발에서는 컨텐츠를 동적으로 생성하는 것이 Sweetalert2를 사용하여 대화식 모달 상자를 만드는 것과 같은 일반적인 요구 사항입니다. 그러나 이러한 동적 컨텐츠에 ShareThis Share 버튼과 같은 외부 JavaScript 라이브러리에 의해 초기화되어야하는 요소가 포함 된 경우 일반적인 타이밍 문제가 발생합니다.
예를 들어, Sharethis 등은 일반적으로 페이지가로드 될 때 DOM을 스캔하여 특정 CSS 클래스 (예 : Sharethis-inline-buttons)를 찾고 구성 요소를 렌더링합니다. 이러한 요소가 Sweetalert2 모달 박스의 일부인 경우 페이지가 처음로드 될 때 DOM에는 존재하지 않습니다. sweetalert2는 사용자가 트리거 할 때 모달 박스의 HTML 구조를 동적으로 생성합니다. 즉, Sharethis 스크립트가 초기화 로직을 실행할 때 동적으로 생성 된 요소를 찾을 수 없으므로 공유 버튼이 제대로 표시되지 않습니다.
원래 코드 시도는 다음과 같습니다.
Sharetext =`이 웹 사이트를 공유하자. <br> <div class="주식 컨테이너"> <div class="Sharethis-inline-share-buttons"> </div> </div>`; Modal.fire ({ titletext : "전파 및 공유", html : sharetext, 아이콘 : "정보", 배경 :`RGBA (0,0,0,0.7)` });
이 경우, modal.fire가 호출 될 때 Sharethis-inline-share-buttons 요소가 DOM에 주입되고 Sharethis의 자동 스캐닝 메커니즘이 오래 전에 완료되었을 수 있으므로 이러한 버튼을 인식하고 초기화 할 수 없습니다.
해결책 : Sweetalert2의 수명주기 후크를 활용하십시오
Sweetalert2는 개발자가 모달 박스의 다양한 단계에서 사용자 정의 로직을 실행할 수있는 강력한 라이프 사이클 후크 기능을 제공합니다. 위의 문제를 해결하기위한 열쇠는 Didopen 또는 Didrender의 두 고리를 사용하는 것입니다.
- DIDOPEN :이 기능은 모달 박스를 열 때 동기식으로 호출됩니다 (즉, 내용물은 DOM에 완전히 주입되어 볼 수 있습니다).
- DIDRENDER :이 기능은 모달 박스가 렌더링 될 때 호출됩니다 (즉, 콘텐츠가 DOM에 주입되지만 반드시 볼 수 있거나 애니메이션이 완료되지는 않습니다).
모달 박스의 요소를 초기화 해야하는 시나리오의 경우, didopen은 DOM에 요소가 존재할뿐만 아니라 모달 박스도 사용자에게 완전히 제시되기 때문에 일반적으로 더 적절한 선택입니다.
구현 단계 및 샘플 코드
Sweetalert2 모달 상자에서 Sharethis 버튼이 렌더링되지 않는 문제를 해결하려면 Didopen 콜백 기능에서 Sharethis의 초기화 방법을 수동으로 트리거하면됩니다. Sharethis 라이브러리는 일반적으로 Window .__ ShareThis __. Initialize ()와 같은 전 세계적으로 액세스 가능한 초기화 기능을 제공합니다.
다음은 특정 구현 코드입니다.
// Sharethis의 자리 표시자를 포함하는 모달 박스 콘텐츠 정의 <br> <div class="주식 컨테이너"> <div class="Sharethis-inline-share-buttons"> </div> </div>`; // sweetalert2 modal box swal.fire 트리거 ({// sweetalert2를 가져 왔고 swal이라는 이름을 가정합니다. titletext : "전파 및 공유", html : sharetext, 아이콘 : "정보", 배경 :`RGBA (0,0,0,0.7)`, // 키 파트 : 모달 상자가 완전히 열린 후 초기화 실행 : function () { // Sharethis 초기화 함수가 오류를 피하기 위해 존재하는지 확인하십시오. Window .__ Sharethis __. 초기화 (); Console.log ( "Sharethis 버튼은 Sweetalert2 Modal 내부에서 초기화되었습니다."); } 또 다른 { Console.warn ( "ShareThis 초기화 함수는 찾을 수 없거나 준비되지 않습니다."); } } });
코드 구문 분석 :
- Sharetext : Sharethis가 인식하고 실제 버튼으로 대체 된 자리 표시자인 Sharethis-Inline-Share-Buttons 클래스가 여전히 포함되어 있습니다.
- Swal.fire ({...}) : Modal Box를 표시하는 데 사용되는 Sweetalert2의 호출 방법.
- didopen : function () {...} : 이것이 핵심입니다. 이 기능은 Sweetalert2 모달 박스의 HTML 함량이 DOM에 완전히 렌더링되고 삽입 될 때 실행됩니다. 현재 Sharethis-inline-share-buttons 요소는 이미 DOM에 존재합니다.
- Window .__ ShareThis __. Initialize () : Sharethis 라이브러리가 제공하는 수동 초기화 방법입니다. DOM을 구출하고 일치하는 모든 Sharethis 자리 표시자를 찾아 실제 공유 버튼으로 대체합니다. 호출되기 전에 함수가 존재하는지 확인하기 위해 간단한 조건부 점검을 추가했습니다.
적용 가능성 및 예방 조치
- 일반적인 솔루션 :이 접근법은 Sharethis뿐만 아니라 동적으로 생성 된 컨텐츠에서 구성 요소를 초기화 해야하는 타사 라이브러리 또는 사용자 정의 JavaScript 논리를위한 것입니다. 라이브러리가 DOM을 수동으로 초기화하거나 구조하는 방법을 제공하는 한 Didopen에서 호출 할 수 있습니다.
- DIDRENDER vs DIDOPEN : 모달 박스 애니메이션이 시작되기 전에 또는 모달 박스 컨텐츠가 렌더링 된 직후 (모달 박스가 완전히 보이지 않더라도) 초기화 로직을 실행 해야하는 경우 Didrender 사용을 고려할 수 있습니다. 그러나 대부분의 사용자가 볼 수있는 UI 구성 요소의 초기화를 위해 Didopen은보다 강력한 선택입니다.
- 라이브러리 초기화 방법 : 다양한 라이브러리마다 수동 초기화 방법이 다릅니다. 올바른 API 호출을 찾으려면 관련 라이브러리 문서를 참조하십시오.
- 오류 처리 : 타사 라이브러리의 초기화 방법을 호출 할 때 라이브러리가 완전히로드되지 않았거나 API가 변경 될 때 런타임 오류를 방지하기 위해 메소드가 존재하는지 확인하기 위해 조건 검사를 추가하는 것이 가장 좋습니다.
요약
Sweetalert2에서 제공하는 Didopen 라이프 사이클 후크를 영리하게 활용함으로써 외부 스크립트가 동적으로 생성 된 모달 박스 컨텐츠를 초기화 할 수 없다는 문제를 완벽하게 해결할 수 있습니다. 이 패턴은 관련 초기화 로직이 대상 DOM 요소가 존재하고 볼 때만 트리거되도록하여 동적 컨텐츠의 올바른 렌더링과 함수의 무결성을 보장합니다. 이 기술을 마스터하는 것은 복잡하고 대화식 웹 애플리케이션을 구축하는 데 중요합니다.
위 내용은 Sweetalert2 Modal Box를로드 한 후 외부 스크립트 초기화를위한 튜토리얼의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undress AI Tool
무료로 이미지를 벗다

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Stock Market GPT
더 현명한 결정을 위한 AI 기반 투자 연구

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

UseMailto : inhreftocreateemaillinks.startwithbasiclinks, add? subject = 및 & body = forpre-filledcontent, andincludemultipleaddressesorcc =, bcc = foradvancedoptions.

이 튜토리얼은 웹 서버 나 오프라인 환경없이 index.html 파일을 직접 열어 Vue.js 프로젝트에 빈 페이지가있는 문제를 해결하는 것을 목표로합니다. 기본 VUE CLI 빌드가 실패한 이유를 파고 모든 VUE 코드와 리소스를 단일 HTML 파일에 패키지하는 솔루션을 제공하여 서버 환경에 의존하지 않고도 프로젝트가 로컬 장치에서 독립적으로 실행될 수 있습니다.

이 튜토리얼은 CSS를 사용하여 HTML 페이지의 특정 텍스트 내용을 정확하게 숨기는 방법에 대해 자세히 설명합니다. 대상 텍스트의 랩핑 요소에 독점 CSS 클래스를 추가하고 디스플레이를 사용하여 다음과 같습니다. 속성, 개발자는 페이지 요소의 세련된 제어를 달성하여 필요한 부품 만 숨겨 지도록 페이지 레이아웃 및 사용자 경험을 최적화 할 수 있습니다.

USETHETITLEATTRIBITFORSIMPLETOOLTIPSORCSSFORCUSTOM-StyledOnes.1.AddTitle = "Text"TOANYELENMENTFORDEFAULTTOOLTIPS.2. FORSTYLEDTOOLTIPS, WRAPTHEELEMENTINICONTAINER, 사용 .TOOLTIPAND.TOOLTIPAND.TOOLTIPTEXTCLASSSSSSPOTIVICIONITINITINING, PSEUDOINUTE, 및 VSEUDOINGIONC

ThefigureElementGroups 자체 포함 된 medialikeImagesOrcharts, whidefigcaptionprovideAnoptionalCaption; TheyimimproveAccessibility andemantics, Asshowninalabeledsaleschartexamplice.

이 기사는 HTML, CSS 및 JavaScript를 사용하여 버튼을 클릭하여 트리거 된 플로팅 챗봇 창을 만드는 방법에 대해 자세히 설명합니다. 고정 된 위치 및 동적 스타일 스위칭을 통해 페이지의 오른쪽 하단에있는 부동 버튼이 실현됩니다. 클릭하면 채팅 창이 나타나고 닫는 기능이 제공됩니다. 자습서에는 개발자가 유사한 기능을 웹 사이트에 쉽게 통합 할 수 있도록 설계된 완전한 코드 예제 및 구현 단계가 포함되어 있습니다.

이 기사는 크로스 도메인 iframes를 포함하는 부모 div에서 마우스 딩 이벤트를 포착하는 과제를 탐구합니다. 핵심 문제는 브라우저 보안 정책 (동일한 오리핀 정책)이 크로스 도메인 iframe 컨텐츠에서 직접 DOM 이벤트를 듣지 않는다는 것입니다. iframe 소스 도메인 이름이 제어되고 CORS가 구성되지 않는 한 이러한 유형의 이벤트 캡처를 달성 할 수 없습니다. 이 기사는 이러한 보안 메커니즘을 자세히 설명하고 이벤트 상호 작용에 대한 한계를 설명하고 가능한 대안을 제공합니다.

이 기사는 HTML에서 외부 JavaScript 함수를 호출 할 때 두 가지 일반적인 문제를 탐구합니다. 부적절한 스크립트로드 시간으로 인해 DOM 요소가 준비되지 않으며 기능 이름 지정은 브라우저 내장 이벤트 또는 키워드와 충돌 할 수 있습니다. 이 기사는 스크립트 참조 위치를 조정하고 JavaScript 코드가 올바르게 실행되도록하기 위해 우수한 기능 이름 지정 사양을 포함한 자세한 솔루션을 제공합니다.
