MCPcopy Index your code
hub / github.com/XIU2/UserScript / pageLoading

Function pageLoading

Autopage.user.js:1603–1683  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

1601
1602 // 自动无缝翻页
1603 function pageLoading() {
1604 if (curSite.SiteTypeID === 0 || !curSite.pager) return
1605 if (curSite.pager.type === undefined) curSite.pager.type = 1; // 默认翻页模式 1
1606 if (curSite.pager.scrollD === undefined) curSite.pager.scrollD = 2000; // 默认翻页触发线 2000
1607 if (curSite.pager.interval === undefined) curSite.pager.interval = 500; // 默认间隔时间 500ms
1608 /*if (curSite.pager.replaceE === undefined) { // 如果 replaceE 不存在,则默认替换 nextL
1609 if ((curSite.pager.type === 1 || curSite.pager.type === 3 || curSite.pager.type === 6) && curSite.pager.nextL && typeof curSite.pager.nextL !== 'function' && curSite.pager.nextL.search(/^js;/i) !== 0) {
1610 curSite.pager.replaceE = curSite.pager.nextL
1611 }
1612 }*/
1613 //console.log(curSite)
1614 curSite.pageUrl = ''; // 下一页URL
1615 windowScroll(function (direction, e) {
1616 // 下滑 且 未暂停翻页 且 SiteTypeID > 0 时,才准备翻页
1617 if (direction != 'down' || !pausePage || curSite.SiteTypeID == 0) return
1618
1619 // 翻页模式 5 且为框架内时,要判断顶层是否通过页码暂停翻页了
1620 if (curSite.pager.type == 5 && self != top && window.top.document.xiu_pausePage == false) return
1621
1622 let scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop,
1623 scrollHeight = window.innerHeight || document.documentElement.clientHeight,
1624 scrollD = curSite.pager.scrollD;
1625 // <<<<< 翻页类型 3(依靠 [基准元素] 与 [浏览器可视区域底部] 之间的距离缩小来触发翻页)>>>>>
1626 if (curSite.pager.type === 3) {
1627 if (!curSite.pager.scrollE) { // 当 scrollE 未指定时
1628 if(curSite.pager.replaceE) { // 如果指定了 replaceE,则默认 scrollE 为 replaceE
1629 curSite.pager.scrollE = curSite.pager.replaceE;
1630 } else { // 如果 replaceE 也未指定,则默认 scrollE 为 nextL
1631 curSite.pager.scrollE = curSite.pager.nextL;
1632 }
1633 }
1634 let scrollE = getOne(curSite.pager.scrollE);
1635 //console.log(scrollE.offsetTop, scrollE.offsetTop - (scrollTop + scrollHeight), scrollD, scrollTop + scrollHeight, curSite.SiteTypeID)
1636 if (scrollE.offsetTop - (scrollTop + scrollHeight) <= scrollD) {intervalPause(); checkURL(getPageE);}
1637
1638 } else if (document.documentElement.scrollHeight <= scrollHeight + scrollTop + scrollD) {
1639 // <<<<< 翻页类型 1(由脚本实现自动无缝翻页)>>>>>
1640 if (curSite.pager.type === 1) {
1641 intervalPause(); checkURL(getPageE);
1642
1643 // <<<<< 翻页类型 2(网站自带了自动无缝翻页功能,只需要点击下一页按钮即可)>>>>>
1644 } else if (curSite.pager.type === 2) {
1645 let autopbn = getOne(curSite.pager.nextL);
1646 if (!autopbn) return
1647 if (curSite.pager.isHidden && isHidden(autopbn)) return // 如果 isHidden = true,那么需要判断元素是否隐藏
1648 if (curSite.pager.nextText) {
1649 //console.log(curSite.pager.nextText, autopbn.innerText, autopbn)
1650 // 按钮文本,当按钮文本 = 该文本时,才会点击按钮加载下一页
1651 if (autopbn.innerText === curSite.pager.nextText) {autopbn.click(); pageNumIncrement();}
1652 } else if (curSite.pager.nextTextOf) {
1653 // 按钮文本的一部分,当按钮文本包含该文本时,才会点击按钮加载下一页
1654 if (autopbn.innerText.indexOf(curSite.pager.nextTextOf) > -1) {autopbn.click(); pageNumIncrement();}
1655 } else if (curSite.pager.nextHTML) {
1656 // 按钮内元素,当按钮内元素 = 该元素内容时,才会点击按钮加载下一页
1657 if (autopbn.innerHTML === curSite.pager.nextHTML) {autopbn.click(); pageNumIncrement();}
1658 } else {
1659 intervalPause();
1660 // 如果没有指定按钮文字就直接点击

Callers 2

getRulesUrl_Function · 0.70
Autopage.user.jsFile · 0.70

Calls 8

getOneFunction · 0.85
intervalPauseFunction · 0.85
checkURLFunction · 0.85
isHiddenFunction · 0.85
pageNumIncrementFunction · 0.85
getNextE_Function · 0.85
getPageE_Function · 0.85
windowScrollFunction · 0.70

Tested by

no test coverage detected