/** * 各種ライブラリを追加 * - [Swiper](https://swiperjs.com/) * - [Anime](https://animejs.com/) */ (() => { const swiper_js_path = "https://cdn.rs-sys.jp/lib/swiper/swiper-bundle.min.js"; const swiper_css_path = "https://cdn.rs-sys.jp/lib/swiper/swiper-bundle.min.css"; const anime_js_path = "https://cdn.rs-sys.jp/lib/anime/anime.min.js"; // swiper if(!document.querySelector(`script[src="${swiper_js_path}"]`)){ const scriptEl = document.createElement("script"); scriptEl.setAttribute("src", swiper_js_path); document.head.appendChild(scriptEl); } if(!document.querySelector(`link[href="${swiper_css_path}"]`)){ const linkEl = document.createElement("link"); linkEl.setAttribute("href", swiper_css_path); linkEl.setAttribute("rel", "stylesheet"); document.head.appendChild(linkEl); } // anime if(!document.querySelector(`script[src="${anime_js_path}"]`)){ const scriptEl = document.createElement("script"); scriptEl.setAttribute("src", anime_js_path); document.head.appendChild(scriptEl); } })(); /** * サーバーからデータを取得 * - [CDN](https://cdn.rs-sys.jp/js/cms_ajax/1.0.0/output_cms.php) */ fetch("https://cdn.rs-sys.jp/js/cms_ajax/1.0.0/output_cms.php", { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8" }, body: "mode=view_cms_slider&cms_id=11&cms=25072-1&u_id=1" }).then((res) => { if (!res.ok) { alert("誤ったURLが設定されている可能性があります。ご確認ください。"); throw new Error("Unexpected URL"); } return res.json(); }).then((data) => { const interval = 500; const timeout = 5000; const wrapper = document.querySelector("#cms-slider-1-1-area"); if(null != wrapper){ // ノードを作成 const row_script = document.createElement("script"); wrapper.innerHTML = data.html; row_script.textContent = data.script; // ライブラリの存在判定、一定時間後タイムアウトとエラーをスロー const clearID = setInterval(() => { if(null != Swiper && null != anime){ clearInterval(clearID); document.body.appendChild(row_script); } if(timeout < performance.now()){ clearInterval(clearID); throw new Error("Failed to load distribution"); } },interval); } }) .catch((error) => { console.error(error); });