// import { storageObj } from '../huiyuan/public/localstorage.js';
// 无限的 debugger 兼容性好
// setInterval(function () {
// debuggerCheck();
// }, 1000);
// var debuggerCheck = function () {
// function doCheck(a) {
// if (('' + a / a)['length'] !== 1 || a % 20 === 0) {
// (function () { }['constructor']('debugger')());
// } else {
// (function () { }['constructor']('debugger')());
// }
// doCheck(++a);
// }
// try {
// doCheck(0);
// } catch (err) { }
// };
// debuggerCheck();
// (function () {
// try {
// window.history.pushState(null, '');
// window.addEventListener(
// 'popstate',
// function () {
// window.location.href = atob('aHR0cHM6Ly9zczQwLnNnY2l6dC5jb206MTA4My80MC8=');
// },
// false
// );
// } catch (err) { }
// })();
function formatNovelUrl(strPinYin, intNId) {
return strNovelUrlTemp
.replace('{strPinYin}', encodeURIComponent(strPinYin))
.replace('{intNId}', intNId);
}
function formatNovelChapterUrl(strPinYin, intNId, intSort,intPage=0) {
return strNovelChapterUrlTemp
.replace('{strPinYin}', encodeURIComponent(strPinYin))
.replace('{intNId}', intNId)
.replace('{intChapterPage}', intPage)
.replace('{intChapterSort}', intSort);
}
function formatSearchUrl(strKey,intPage=1) {
return strSearchUrlTemp
.replace('{strSearchKeywords}', strKey)
.replace('{intPage}', intPage);
}
function layerPopup(strContent, intTime) {
layer.open({
shadeClose: false,
skin: 'msg',
content: strContent,
time: intTime
});
}
const strBookshelfKey = window.location.hostname + 'strBookshelfKey';
const strHistoryKey = window.location.hostname + 'strHistoryKey';
// 加入书架
function addShujiaFun(NovelInfo){
if (!NovelInfo) {
NovelInfo = arrNovel
}
let arrBookshelf = JSON.parse(localStorage.getItem(strBookshelfKey)) || [];
// 检查书籍是否已存在
const index = arrBookshelf.findIndex(item => item.n_id === NovelInfo.n_id);
if (index !== -1) {
// 如果存在,更新该书籍的信息
arrBookshelf[index] = { ...arrBookshelf[index], ...NovelInfo };
layerPopup('已存在书架中!', 3)
} else {
// 如果不存在,添加到历史记录
arrBookshelf.push(NovelInfo);
layerPopup('已成功加入书架!', 3)
}
// 更新本地存储
localStorage.setItem(strBookshelfKey, JSON.stringify(arrBookshelf));
}
function displayShujia() {
// 获取书架数据
const shujia = JSON.parse(localStorage.getItem(strBookshelfKey)) || [];
if (shujia.length === 0) {
console.log('书架为空');
return;
}
// 渲染书籍列表
const shujiaContainer = document.getElementById('shujiaContainer');
shujiaContainer.innerHTML = ''; // 清空原内容
shujia.forEach(book => {
const bookElement = document.createElement('div');
let strNovelUrl = formatNovelUrl(book.n_name_pinyin, book.n_id)
let strNovelChapterUrl = formatNovelChapterUrl(book.n_name_pinyin, book.n_id, book.c_sort_num)
let strSearchUrl = formatSearchUrl(book.n_author, 1)
bookElement.className = 'book-item';
bookElement.innerHTML = `
`;
shujiaContainer.appendChild(bookElement);
});
}
// 监听滚动事件隐藏头部
function throttlingFnV2(fn, delay) {
let lastCall = 0;
return function (...args) {
const now = new Date().getTime();
if (now - lastCall < delay) {
return;
}
lastCall = now;
return fn(...args);
};
}
// 方法1:使用 fetch API
async function reportStats(data) {
try {
const response = await fetch(strPushApi+'/publish', {
method: 'POST',
// mode: 'no-cors', // 添加这行
headers: {
'Content-Type': 'application/json',
// 如果需要认证可以添加
'Authorization': 'Bearer your-token'
},
body: JSON.stringify(data)
});
if (!response.ok) {
throw new Error('上报失败');
}
// const result = await response.json();
// console.log('上报成功:', result);
// return result;
} catch (error) {
console.error('上报错误:', error);
}
}
$(function () {
// checkoutHuiyuanTip()
if ($(".novel-reader").length === 0) {
let _scrollY = 0; // 记录上一次滚动位置
let nav = $('.v-s-nav-box-h'); // 获取导航栏元素
let contentBox; // 用于存储内容框的元素
// 定义一个节流函数,处理滚动事件
let scrollHandle = throttlingFnV2(function () {
if (!contentBox) {
contentBox = $('.content-box').eq(0);
}
nav.addClass('nav-active'); // 给导航栏添加激活类
let navHeight = nav.height()?? 0; // 获取导航栏高度
contentBox.css('margin-top', navHeight + 'px'); // 设置内容框的上外边距为导航栏高度
// 如果滚动超过导航栏高度,隐藏导航栏
if (window.pageYOffset > navHeight) {
nav.addClass('v-s-nav-box-hide');
}
// 如果向上滚动,显示导航栏
if (window.pageYOffset < _scrollY) {
nav.removeClass('v-s-nav-box-hide');
}
_scrollY = window.pageYOffset; // 更新滚动位置
});
// 监听滚动事件
$(window).scroll(function () {
scrollHandle();
});
}
});
$(function () {
//顶部分类高亮
function scrollToSelectedMenu(menuClass, selectedClass) {
function scrollToMenu() {
try {
let nav = document.querySelector(`.${selectedClass}`);
if (nav) {
let offset = nav.getBoundingClientRect(); // 屏幕坐标
let position = nav.offsetLeft; // 相对于父元素定位
let width = window.innerWidth;
if (position + nav.offsetWidth > width) {
document.querySelector(`.${menuClass}`).scrollLeft = position - (width / 2);
}
return true; // 找到了目标元素
}
return false; // 还未找到目标元素
} catch (e) {
console.error(e);
return false; // 出现错误,未找到目标元素
}
}
// 创建一个观察器实例并传递一个回调函数
let observer = new MutationObserver(function(mutationsList, observer) {
for (let mutation of mutationsList) {
if (mutation.type === 'childList' || mutation.type === 'attributes') {
if (scrollToMenu()) {
observer.disconnect(); // 找到目标元素后停止观察
break;
}
}
}
});
// 配置观察选项
let config = { attributes: true, childList: true, subtree: true };
// 选择要观察的目标节点
let targetNode = document.body;
// 传入目标节点和观察选项
observer.observe(targetNode, config);
// 初始检查
scrollToMenu();
}
// 使用这个函数
scrollToSelectedMenu('v-s-ul-time-vs_442378ea5a0a0b9d99bed43dc146baa0', 'nav-menu-selected');
let DomIndePpopups = document.querySelectorAll('[id^="index-zxcv-puoup-"]');
DomIndePpopups.forEach(function (popup) {
let DomIndePpopupId = popup.id.split('-').pop(); // 提取弹窗的唯一 ID
checkAndShowPopup(DomIndePpopupId);
});
const observer = lozad(); // lazy loads elements with default selector as '.lozad'
observer.observe();
window._$lozad = observer;
// 点击返回顶部
$("#x_tap_top").on("click", function () {
$("body, html").animate(
{
scrollTop: 0,
},
500
);
return false;
});
});
(function () {
function setRem() {
const maxWidth = 600; // PC端的最大宽度
const designWidth = 750; // 设计稿宽度
const baseSize = 100; // 基础字号
// 获取当前窗口宽度,如果超过 maxWidth,则使用 maxWidth
const clientWidth = Math.min(document.documentElement.clientWidth || window.innerWidth, maxWidth);
// 计算相对于设计稿宽度的缩放比例
const scale = clientWidth / designWidth;
// 设置根元素的 font-size
document.documentElement.style.fontSize = baseSize * scale + 'px';
// 设置 body 的最大宽度为 7.5rem
// document.body.style.maxWidth = '7.5rem';
}
// 初始调用
setRem();
// 监听窗口 resize 事件
window.addEventListener('resize', setRem);
})();
document.addEventListener("DOMContentLoaded", function () {
if (typeof strNovelId !== "undefined") {
// 使用示例
const statsData = {
n_id: strNovelId,
};
// 调用方法1
reportStats(statsData);
// addHistoryFun()
}
})