先放代码:把这段代码粘贴到浏览器开发者工具的控制台(console),然后回车,前提是qq空间的页面要一直打开,可以在个人中心运行。varclicklog=function(){[].map.call(document.getElementsByClassName("qz_like_btn_v3"),function(item){if(item.dataset.clicklog==="like"){item.click();}})}setInterval(function(){document.body.scrollTop+=1000;if(!document.getElementsByClassName("img-loading")){clicklog();}else{document.body.scrollTop-=1000;clicklog();document.body.scrollTop+=1000;}},200)解释一下这段代码:DOM的NodeList虽然可以以[0]的形式获取到对应的节点,但它仍然是类数组,所以使用call方法使用map方法使其可遍历。我观察QQ空间的点赞按钮,点赞之后data-clicklog会变成cancellike,所以我可以根据这个来判断自己是不是有点喜欢,然后用click()方法模拟点赞。但是QQ空间是分块加载的,所以要下拉一定距离才能刷新下一个内容,所以我用setInterval动态改变scrollTop的值,每0.2s下拉1000px。我通过加载图片是否出现来判断这个。如果有loading(此时scrollTop一直在增加,但是一直处于loading状态,无法加载),页面必须向上滚动才能继续加载,所以我让scrollTop减少了1000px。如果我不明白这一点,你可以删除document.body.scrollTop-=1000;并尝试再次运行它。今天发现QQ空间个人中心是跨域的iframe,所以获取不到DOM,所以这段代码只能在我的首页运行。
