/** * 指定のコンテンツをフェッチしてスクリプト実行箇所に挿入する */ const includeContent = async (rootDir, path) => { // スクリプト実行箇所 const elem = document.currentScript try { // 対象ドキュメントをフェッチする const response = await fetch(`${rootDir}${path}`) if (!response.ok) { throw new Error('Network response was not ok') } // ディレクトリを置換する const html = (await response.text()).replace(/\{root\}/g, rootDir) // 要素の直前に差し込む elem.insertAdjacentHTML('beforebegin', html) // 要素(`script`)を削除する elem.parentElement.removeChild(elem) } catch (error) { console.error('Fetch error:', error) } } /** * スクリプト実行箇所に指定の分割したHTMLを挿入する */ const include_module = async (rootDir, module) => { await includeContent(rootDir, `/assets/inc/${module}.html`) } /** * クローズボタンのイベントを設置する */ const setFloatingBannerCloseButton = () => { console.log('クローズボタンのイベントを設置する') const fb = document.querySelector('.floating-banner') const close = document.querySelector('.floating-banner-close') console.log(fb) console.log(close) if (fb && close) { close.addEventListener('click', () => { console.log('close banner') fb.classList.add('off') }) } }