Chargement automatique des pages Web paginées suivantes et insertion dans la page en cours. Prend en charge des milliers de sites Web sans aucune règle.
谢谢,你的喜马拉雅下载器也很好用。
pjax的站给个例子看看,目前只监听了pushState,如果是通过pushState变更网址,会自动重置,不需要手动监听。
暂且更了一版,给replaceState也加了个监听,你试试看。
关于页码条的问题,你指的是页面自带的吗?如果是的话,可以编辑pageElement,把页码条包括在内。
页码条Super_preloaderPlus_one能用replaceE替换
不过不是很完美有时会导致翻页失效或替换失败
自动无缝翻页的replaceE就能完美办到
因为翻下一页的基准就是替换页码条来重新取得下一页的连接
如果用pageElement会包含很多页码条
有人就喜欢翻页只增加主体内容不含增加页码条
页码条用替换的或根本不用换
谢谢,你的喜马拉雅下载器也很好用。
pjax的站给个例子看看,目前只监听了pushState,如果是通过pushState变更网址,会自动重置,不需要手动监听。
哈哈,你认错人了,我刚刚接触脚本这方面的知识,谢谢你的回答。
我使用了你提供的最新版,发现目前最新版(1.9.31.20) 有bug: 在自定义规则的页面会无限刷新。 除此以外,还是会出现上下页不一致的问题,我在代码增加了debug信息,发现脚本其实已经侦测到了urlchanged的信息,但urlchanged前的页面元素不知道是什么原因没有被清除。
具体网址因为是学校的论坛,需要账号才能登录,网址和账号已经电邮到你的邮箱。
页码条的问题跟@tony0809说的一样:“页码条用替换的或根本不用换”,也就是希望能够在不额外增加页码条的同时,使唯一的页码条能跟随翻页进度变化(或替换),pageElement包括页码条后会让每页都出现一个页码条,页与页之间的距离会宽很多。
好的,我待会debug一下。估计是插入点不在清理范围内,我想想解决方案。
关于页码条,你的描述我理解了。但为什么不直接用永页机自带的页码条呢?真实页码数可以用pageBarNum设定。
直接替换页内的页码条的话,有静态url的还好,如果页码条上绑定了事件,换出来将会丢失事件。
是认错人了,我看后台你的ip上绑了很多账号,估计都是你们学校的。
关于北邮论坛,这个还不算是pjax,我看了下,它没有用到相关方法,只是拦截了a标签后更改了hash。所以我新增了一个属性listenHashChange,用来监听hash变更。规则如下
{ "name": "北邮人论坛-北邮校园", "url": "^https://bbs\\.byr\\.cn", "listenHashChange": true, "pageElement": "section#main.corner > section#body>.b-content", "action": 1 }
关于元素替换,新增了一个replaceElement,支持选择器、xpath或数组,例如replaceElement: "#page"
或者 replaceElement:["#id1","#id2"]
哦哦,我应该记错了论坛,感谢replaceElement是可用的,它能够替换掉页面的页码条。但我测试了一个同一页有两个页码条的网站,它们分别在顶部和底部,class相同都为".paging",脚本只替换了顶部的页码条,之后我阅读代码发现只替换了选择器选择到的第一个元素,我想如果替换选择器选择到的所有元素会更方便些,这样不需要写一些冗余的selector。 replaceElement中的处理代码替换成了如下的代码后,脚本能替换掉所有选择到的页码条。
replaceElementSel.forEach(sel => {
let pageEles= getAllElements(sel, document);
let replaceEles= getAllElements(sel, doc);
if (pageEles.length != 0 && replaceEles.length != 0 && pageEles.length === replaceEles.length) {
for (let i = 0; i < pageEles.length; i++) {
pageEles[i].parentNode.replaceChild(replaceEles[i], pageEles[i]);
}
}
});
上下页不一致的问题目前还存在,出问题的截图电邮过来了,感谢。
我确实想过批量替换,但是适用范围太小,如果定位到的是两个容器的子元素,而数量不一,替换就没法进行。也有可能下一页某个元素被隐藏了,而实际我希望其他剩余的元素不受影响继续替换,此时就无法达成目的。
因此最后我选择了精确匹配+数组的方式。
如果要替换的元素过多,则可以考虑更改为父元素的选择器。
最终还是改成批量替换了,因为我考虑了下,如果是精确匹配,定位到的元素数量总是1,与现在没有任何区别,不会有什么大影响。如果非精确匹配,那有问题就随它去吧😀
是的随它去😄, 目前在北邮论坛上还有一个小问题是,在帖子内翻页后需要多次点击(大概等于翻页的次数)浏览器的回退键,才能够退出帖子到上一层,设置history=0后似乎也没有作用。
这个问题我在chrome下似乎没有复现,你现下用的是什么环境?排除其他扩展的影响了吗?
请问如何对使用pjax的网站编写规则,一般规则对这类网站很容易出现:切换帖子/主题后,上下页不一致的问题。 之前使用的autopager的解决方式是提供一个设置函数fun.isurlC()让脚本来监测网址的变化。
另一个问题是怎么让翻页bar(页码条)也随着自动翻页的动作改变,比如到最后一页后,bar的位置上会显示的是最后一页的bar,有点强迫症hh。
最后十分感谢作者的工作,脚本非常好用。