28-0.784384-149.241856-1.5872-223.862784-2.36544-28.448768-0.29696-52.625408 14.86848-62.22848 40.138752-2.811904 7.395328-4.007936 15.80032-4.124672 23.76704-1.830912 126.072832-3.364864 252.145664-4.97664 378.222592-0.03072 2.330624-0.155648 4.657152-0.233472 6.987776l-0.95232 0.096256z" p-id="16486" fill="#fe8d15">', 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.src).then(function() { alert('链接已复制到剪贴板'); }); } else { // 备用方案 prompt('复制此链接:', contentEl.src); } } toggleMoreMenu(); } // 在新窗口打开当前页面 function openInNewWindow() { var contentEl = document.getElementById('btmNavIframeContent'); if (contentEl && contentEl.src) { window.open(contentEl.src, '_blank'); } toggleMoreMenu(); } // 关闭iframe function closeIframe() { var iframe = document.getElementById('btmNavIframe'); var contentEl = document.getElementById('btmNavIframeContent'); var menuBar = document.getElementById('btmNavMenu'); if (iframe && contentEl) { // 隐藏更多菜单和加载动画 var moreMenu = document.getElementById('btmNavMoreMenu'); var loadingEl = document.getElementById('btmNavLoading'); if (moreMenu) { moreMenu.style.display = 'none'; } if (loadingEl) { loadingEl.style.display = 'none'; } // 移除所有iframe类 iframe.classList.remove('btm-nav-fullscreen'); iframe.classList.remove('btm-nav-with-menu'); iframe.style.display = 'none'; contentEl.src = ''; // 重置iframe样式到默认状态 iframe.style.top = '0'; iframe.style.bottom = 'auto'; iframe.style.height = '100vh'; iframe.style.left = '50%'; iframe.style.width = '100vw'; iframe.style.maxWidth = '760px'; iframe.style.transform = 'translateX(-50%)'; // 重置内容区域高度 contentEl.style.height = 'calc(100% - 35px)'; // 恢复菜单栏显示 if (menuBar) { menuBar.style.display = 'block'; } } } /* ===== 全局控制函数 ===== */ // 关闭栏控制 function enableCloseBar() { globalSettings.closeBar.enabled = true; } function disableCloseBar() { globalSettings.closeBar.enabled = false; } function setDefaultCloseBar(show) { globalSettings.closeBar.defaultShow = show; } function setMenuCloseBar(menuId, show) { for (var i = 0; i < menuConfig.length; i++) { if (menuConfig[i].id === menuId) { menuConfig[i].showCloseBar = show; break; } } } // 菜单栏控制 function enableMenuBar() { globalSettings.menuBar.enabled = true; var menuBar = document.getElementById('btmNavMenu'); if (menuBar) menuBar.style.display = 'block'; } function disableMenuBar() { globalSettings.menuBar.enabled = false; var menuBar = document.getElementById('btmNavMenu'); if (menuBar) menuBar.style.display = 'none'; } function setDefaultMenuBar(show) { globalSettings.menuBar.defaultShow = show; } function setMenuMenuBar(menuId, show) { for (var i = 0; i < menuConfig.length; i++) { if (menuConfig[i].id === menuId) { menuConfig[i].showMenuBar = show; break; } } } // 颜色控制函数 function setGlobalActiveColor(color) { globalSettings.colors.activeColor = color; // 重新应用当前选中菜单的颜色 var currentActiveItem = document.querySelector('.btm-nav-item.active'); if (currentActiveItem) { var activeId = currentActiveItem.getAttribute('data-id'); setActive(activeId); } } function setMenuActiveColor(menuId, color) { for (var i = 0; i < menuConfig.length; i++) { if (menuConfig[i].id === menuId) { menuConfig[i].activeColor = color; // 如果这个菜单当前是选中状态,立即应用新颜色 if (menuConfig[i].active) { setActive(menuId); } break; } } } // 设置安全区域背景色 function setSafeAreaBackground(color) { if (color) { globalSettings.colors.safeAreaBackground = color; // 更新CSS中的背景色 var style = document.createElement('style'); style.textContent = ` @supports (padding: max(0px)) { body::before { background: ${color} !important; } } `; document.head.appendChild(style); } } // 点击其他地方关闭更多菜单 document.addEventListener('click', function(e) { var moreMenu = document.getElementById('btmNavMoreMenu'); var moreButton = document.querySelector('.btm-nav-iframe-more'); if (moreMenu && moreButton && moreMenu.style.display === 'block' && !moreMenu.contains(e.target) && !moreButton.contains(e.target)) { moreMenu.style.display = 'none'; } }); // 初始化 function init() { generateMenu(); // 设置安全区域背景色 setSafeAreaBackground(globalSettings.colors.safeAreaBackground); } /* ===================================================== * 全局控制函数 * ===================================================== * 这些函数暴露给全局作用域,可以在页面中直接调用 * 用于动态控制菜单栏的行为和外观 * ===================================================== */ // 关闭栏控制函数 window.enableCloseBar = enableCloseBar; // 启用关闭栏功能 window.disableCloseBar = disableCloseBar; // 禁用关闭栏功能 window.setDefaultCloseBar = setDefaultCloseBar; // 设置关闭栏默认显示状态 window.setMenuCloseBar = setMenuCloseBar; // 设置特定菜单项的关闭栏显示状态 // 菜单栏控制函数 window.enableMenuBar = enableMenuBar; // 启用菜单栏功能 window.disableMenuBar = disableMenuBar; // 禁用菜单栏功能 window.setDefaultMenuBar = setDefaultMenuBar; // 设置菜单栏默认显示状态 window.setMenuMenuBar = setMenuMenuBar; // 设置特定菜单项的菜单栏显示状态 // 颜色和外观控制函数 window.setGlobalActiveColor = setGlobalActiveColor; // 设置全局选中状态颜色 window.setMenuActiveColor = setMenuActiveColor; // 设置特定菜单项的选中颜色 window.setSafeAreaBackground = setSafeAreaBackground; // 设置安全区域背景色 // 初始化菜单 if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', init); } else { init(); }

广告合作:@simisq

【小萝莉影视】

免责申明:小萝莉影视立足于美利坚合众国,受北美法律保护,未满18岁或被误导来到这里,请立即离开!

警告︰本站只适合成年人士观看。未满18岁严禁进入

Copyright © 2010-2023 小萝莉影视 保留所有权利

RSS订阅 - 百度蜘蛛 - 谷歌地图 - 神马爬虫 - 搜狗蜘蛛 - 奇虎地图 - 必应爬虫