svg t="1758079908353" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="21122" width="48" height="48">', activeIcon: '', url: 'https://yp1.91ssc.com', linkType: 'blank', // 超链接方式: 'home'=首页 'iframe'=嵌入 'blank'=新窗口 showCloseBar: true, // 是否显示关闭栏 showMenuBar: false, // 是否显示菜单栏 activeColor: '', // 自定义选中颜色(橙色) }, { id: 'zhibo', name: '成人直播', icon: '', activeIcon: '', url: 'https://zhibo.91ssc.com/', linkType: 'blank', // 超链接方式: 'home'=首页 'iframe'=嵌入 'blank'=新窗口 showCloseBar: true, // 是否显示关闭栏 showMenuBar: false, // 是否显示菜单栏 activeColor: '', // 自定义选中颜色(橙色) }, /* { id: 'yaotai', name: '春药商城', icon: '', activeIcon: '', url: 'https://yaotai.91ssc.com', linkType: 'blank', // 超链接方式: 'home'=首页 'iframe'=嵌入 'blank'=新窗口 showCloseBar: true, // 是否显示关闭栏 showMenuBar: false, // 是否显示菜单栏 activeColor: '', // 自定义选中颜色(橙色) },*/ { id: 'youxi', name: '游戏大厅', icon: '', activeIcon: '', url: 'https://pgylc.91ssc.com', linkType: 'blank', // 超链接方式: 'home'=首页 'iframe'=嵌入 'blank'=新窗口 showCloseBar: true, // 是否显示关闭栏 showMenuBar: false, // 是否显示菜单栏 activeColor: '', // 自定义选中颜色(橙色) }, { id: 'xmvod', name: '熊猫视频', icon: '', activeIcon: '', url: 'https://xmvod.com', linkType: 'blank', // 超链接方式: 'home'=首页 'iframe'=嵌入 'blank'=新窗口 showCloseBar: true, // 是否显示关闭栏 showMenuBar: false, // 是否显示菜单栏 activeColor: '', // 自定义选中颜色(橙色) // showCloseBar和showMenuBar未配置,将使用全局默认设置 } ]; /* ===================================================== * 配置区域结束 * ===================================================== * 使用说明: * 1. 修改globalSettings来调整全局行为 * 2. 修改menuConfig来添加/删除/编辑菜单项 * 3. 可调用window.xxx函数来动态控制功能 * * 常用配置示例: * - 禁用关闭栏:globalSettings.closeBar.enabled = false * - 修改默认颜色:globalSettings.colors.activeColor = '#your-color' * - 添加新菜单:在menuConfig数组中添加新对象 * ===================================================== */ // 生成菜单 function generateMenu() { var container = document.getElementById('btmNavContainer'); if (!container) return; container.innerHTML = ''; for (var i = 0; i < menuConfig.length; i++) { var item = menuConfig[i]; var menuItem = document.createElement('a'); menuItem.className = 'btm-nav-item' + (item.active ? ' active' : ''); menuItem.href = 'javascript:void(0)'; menuItem.setAttribute('data-id', item.id); var icon = item.active ? item.activeIcon : item.icon; var iconHtml = ''; // 判断图标类型(只支持SVG代码和外部链接) if (icon && icon.startsWith(''; } else if (icon && (icon.startsWith('http') || icon.startsWith('/') || icon.includes('.'))) { // 外部图片链接 iconHtml = '
' + item.name + '
'; } else { // 不支持的图标类型,显示默认图标 iconHtml = '
?
'; } menuItem.innerHTML = iconHtml + '' + item.name + ''; // 绑定点击事件 - 使用data属性避免闭包问题 menuItem.onclick = function() { var clickedId = this.getAttribute('data-id'); // 根据ID找到对应的菜单数据 var clickedItem = null; for (var j = 0; j < menuConfig.length; j++) { if (menuConfig[j].id === clickedId) { clickedItem = menuConfig[j]; break; } } if (clickedItem) { handleClick(clickedItem); } }; container.appendChild(menuItem); } // 生成完成后,为默认选中的菜单应用颜色 setTimeout(function() { for (var i = 0; i < menuConfig.length; i++) { if (menuConfig[i].active) { setActive(menuConfig[i].id); break; } } }, 10); } // 处理点击 function handleClick(item) { // 更新活跃状态 setActive(item.id); // 根据linkType处理跳转 if (item.linkType === 'blank') { window.open(item.url, '_blank'); } else if (item.linkType === 'home') { closeIframe(); } else if (item.linkType === 'iframe') { showIframe(item.url, item.name, item); } } // 设置活跃菜单 function setActive(id) { // 首先清除所有菜单的active状态 for (var i = 0; i < menuConfig.length; i++) { menuConfig[i].active = false; } // 设置指定菜单为active for (var i = 0; i < menuConfig.length; i++) { if (menuConfig[i].id === id) { menuConfig[i].active = true; break; } } // 更新DOM var items = document.querySelectorAll('.btm-nav-item'); for (var i = 0; i < items.length; i++) { var item = items[i]; var itemId = item.getAttribute('data-id'); // 移除active类 item.classList.remove('active'); // 找到对应的菜单数据 var menuData = null; for (var j = 0; j < menuConfig.length; j++) { if (menuConfig[j].id === itemId) { menuData = menuConfig[j]; break; } } if (menuData) { var isActive = (itemId === id); // 如果是目标菜单,添加active类并应用自定义颜色 if (isActive) { item.classList.add('active'); // 应用自定义选中颜色 var activeColor = menuData.activeColor || globalSettings.colors.activeColor; item.style.color = activeColor; // 为SVG图标设置颜色 var svgIcon = item.querySelector('.btm-nav-svg-icon svg'); if (svgIcon) { svgIcon.style.color = activeColor; } } else { // 恢复默认颜色 item.style.color = globalSettings.colors.defaultColor; // 为SVG图标恢复默认颜色 var svgIcon = item.querySelector('.btm-nav-svg-icon svg'); if (svgIcon) { svgIcon.style.color = globalSettings.colors.defaultColor; } } // 更新图标 var iconEl = item.querySelector('.btm-nav-icon'); if (iconEl && menuData) { var newIcon = isActive ? menuData.activeIcon : menuData.icon; // 如果是选中状态且图标发生变化,添加抖动动画 if (isActive && newIcon !== menuData.icon) { // 先添加抖动动画 iconEl.classList.add('shake'); // 延迟更新图标,让抖动动画先开始 setTimeout(function() { updateIconContent(iconEl, newIcon, menuData.name); // 动画完成后移除抖动类 setTimeout(function() { iconEl.classList.remove('shake'); // 添加脉冲效果 iconEl.classList.add('pulse'); setTimeout(function() { iconEl.classList.remove('pulse'); }, 400); }, 600); }, 100); } else { // 非选中状态或图标未变化,直接更新 updateIconContent(iconEl, newIcon, menuData.name); } } } } } // 更新图标内容的辅助函数 function updateIconContent(iconEl, newIcon, itemName) { // 判断图标类型并更新(只支持SVG和外部链接) if (newIcon && newIcon.startsWith(''; } } else { // 不支持的图标类型 iconEl.className = 'btm-nav-icon btm-nav-default'; iconEl.innerHTML = '?'; } } // 检测是否为移动设备 function isMobileDevice() { return window.innerWidth <= 760; } // 获取菜单栏的实际高度 function getMenuBarHeight() { var menuBar = document.getElementById('btmNavMenu'); if (menuBar && menuBar.style.display !== 'none') { // 强制重新计算布局 menuBar.offsetHeight; var height = menuBar.getBoundingClientRect().height; if (height > 0) { return Math.ceil(height); // 向上取整避免小数问题 } } // 使用更保守的估算值 return isMobileDevice() ? 55 : 65; } // 显示iframe function showIframe(url, title, menuItem) { var iframe = document.getElementById('btmNavIframe'); var titleEl = document.getElementById('btmNavIframeTitle'); var contentEl = document.getElementById('btmNavIframeContent'); var headerEl = iframe.querySelector('.btm-nav-iframe-header'); var menuBar = document.getElementById('btmNavMenu'); if (iframe && titleEl && contentEl) { closeIframe(); setTimeout(function() { titleEl.textContent = title; contentEl.src = url; // 根据配置决定是否显示关闭栏 var shouldShowCloseBar = getShouldShowCloseBar(menuItem); // 根据配置决定是否显示菜单栏 var shouldShowMenuBar = getShouldShowMenuBar(menuItem); if (shouldShowCloseBar) { headerEl.style.display = 'flex'; iframe.style.top = '0'; contentEl.style.height = 'calc(100% - 35px)'; } else { headerEl.style.display = 'none'; iframe.style.top = '0'; contentEl.style.height = '100%'; } // 控制底部菜单栏显示/隐藏 if (shouldShowMenuBar) { if (menuBar) menuBar.style.display = 'block'; iframe.classList.remove('btm-nav-fullscreen'); // 移除全屏类 // 动态获取菜单栏高度 var menuHeight = getMenuBarHeight(); // 设置CSS变量供CSS使用 document.documentElement.style.setProperty('--btm-nav-menu-height', menuHeight + 'px'); // 简化定位:使用top和bottom,让CSS处理高度 iframe.style.top = '0'; iframe.style.bottom = '0'; // 贴底显示,菜单栏会在上面 if (!shouldShowCloseBar) { iframe.style.height = ''; // 清除内联样式,使用CSS类 iframe.classList.add('btm-nav-with-menu'); contentEl.style.height = '100%'; } else { iframe.style.height = ''; // 清除内联样式,使用CSS类 iframe.classList.add('btm-nav-with-menu'); contentEl.style.height = 'calc(100% - 35px)'; } } else { if (menuBar) menuBar.style.display = 'none'; // 完全占满屏幕,但在移动端考虑安全区域 iframe.style.top = '0'; iframe.classList.remove('btm-nav-with-menu'); // 移除菜单栏类 iframe.classList.add('btm-nav-fullscreen'); // 添加全屏类用于CSS安全区域适配 if (isMobileDevice()) { // 移动端:让CSS的env()处理安全区域,JavaScript只设置基本样式 iframe.style.bottom = '0'; iframe.style.left = '0'; iframe.style.right = '0'; iframe.style.width = '100%'; iframe.style.maxWidth = 'none'; iframe.style.height = '100vh'; iframe.style.transform = 'none'; } else { // 桌面端:保持居中显示 iframe.style.bottom = '0'; iframe.style.left = '50%'; iframe.style.right = 'auto'; iframe.style.width = '100%'; iframe.style.maxWidth = '760px'; iframe.style.height = '100vh'; iframe.style.transform = 'translateX(-50%)'; } if (!shouldShowCloseBar) { contentEl.style.height = '100%'; // iframe内容占满 } else { contentEl.style.height = 'calc(100% - 35px)'; // 减去关闭栏高度 } } iframe.style.display = 'block'; // 显示加载动画 var loadingEl = document.getElementById('btmNavLoading'); var loadingTip = document.getElementById('btmNavLoadingTip'); if (loadingEl) { loadingEl.style.display = 'flex'; // 根据是否显示关闭栏来设置提示内容 if (loadingTip) { loadingTip.className = 'btm-nav-loading-tip'; if (shouldShowCloseBar) { loadingTip.classList.add('show-with-bar'); } else { loadingTip.classList.add('show-no-bar'); } } } // 添加iframe加载完成事件 contentEl.onload = function() { // 隐藏加载动画 if (loadingEl) { loadingEl.style.display = 'none'; } try { // 尝试访问iframe内容(只对同域有效) var iframeDoc = contentEl.contentDocument || contentEl.contentWindow.document; if (iframeDoc && iframeDoc.body) { // 恢复iframe内页面的原始样式 var iframeBody = iframeDoc.body; iframeBody.style.maxWidth = ''; iframeBody.style.margin = ''; iframeBody.style.position = ''; // 确保iframe内的元素保持原有样式 var elements = iframeDoc.querySelectorAll('*'); for (var i = 0; i < elements.length; i++) { elements[i].style.maxWidth = ''; } } } catch (e) { // 跨域iframe无法访问内容,这是正常的安全限制 // 对于跨域iframe,我们无法直接修改其内部样式 } }; }, 100); } } // 判断是否应该显示关闭栏 function getShouldShowCloseBar(menuItem) { // 如果全局关闭栏功能被禁用,直接返回false if (!globalSettings.closeBar.enabled) { return false; } // 如果菜单项有单独配置,使用菜单项配置 if (menuItem && typeof menuItem.showCloseBar !== 'undefined') { return menuItem.showCloseBar; } // 否则使用全局默认设置 return globalSettings.closeBar.defaultShow; } // 判断是否应该显示菜单栏 function getShouldShowMenuBar(menuItem) { // 如果全局菜单栏功能被禁用,直接返回false if (!globalSettings.menuBar.enabled) { return false; } // 如果菜单项有单独配置,使用菜单项配置 if (menuItem && typeof menuItem.showMenuBar !== 'undefined') { return menuItem.showMenuBar; } // 否则使用全局默认设置 return globalSettings.menuBar.defaultShow; } // 切换更多菜单显示/隐藏 function toggleMoreMenu() { var moreMenu = document.getElementById('btmNavMoreMenu'); if (moreMenu) { if (moreMenu.style.display === 'block') { moreMenu.style.display = 'none'; } else { moreMenu.style.display = 'block'; } } } // 刷新当前iframe页面 function refreshIframe() { var contentEl = document.getElementById('btmNavIframeContent'); var loadingEl = document.getElementById('btmNavLoading'); var loadingTip = document.getElementById('btmNavLoadingTip'); if (contentEl && contentEl.src) { // 显示加载动画 if (loadingEl) { loadingEl.style.display = 'flex'; // 刷新时总是显示有关闭栏的提示(因为刷新是从更多菜单触发的) if (loadingTip) { loadingTip.className = 'btm-nav-loading-tip show-with-bar'; } } // 重新加载页面 contentEl.src = contentEl.src; } toggleMoreMenu(); // 关闭菜单 } // 分享当前页面 function shareCurrentPage() { var contentEl = document.getElementById('btmNavIframeContent'); if (contentEl && contentEl.src) { if (navigator.share) { navigator.share({ title: document.getElementById('btmNavIframeTitle').textContent, url: contentEl.src }); } else { // 备用方案:复制到剪贴板 copyCurrentUrl(); } } toggleMoreMenu(); } // 复制当前页面链接 function copyCurrentUrl() { var contentEl = document.getElementById('btmNavIframeContent'); if (contentEl && contentEl.src) { if (navigator.clipboard) { navigator.clipboard.writeText(contentEl.sr