分享+求助:利用js代码实现论坛自动评分的设置问题

查看 44|回复 3
作者:痛痛痛痛   
标签利用js代码实现自动评分的设置问题
一、在论坛随便找个帖子
二、手动评分方式,步骤如下:
1、鼠标滚动到页面“免费评分”位置
2、单击“免费评分”,弹出评分对话框
3、在评分对话框中,选择“吾爱币”
4、在评分对话框中,选择“热心值”
5、在评分对话框中,选择“评分理由”或则自己输入评分理由
6、在评分对话框中,单击“确定”按钮
总共要操作6次,点击+输入十来次,有点麻烦,就想着做个书签,用js代码一键代劳
三、新建书签方法,一般都是通过浏览器的书签管理。各个浏览器操作方法有所差异,最简单的方法就是复制一个书签,右键单击复制的书签,选择“修改……”,然后修改名称,比如为“评分”,js代码就要写到网址里。 我是chrome浏览器,操作以chrome浏览器讲解,后面不在赘述了。
1、鼠标滚动到页面“免费评分”位置,使用js代码无需考虑页面滚动位置,这一步什么都不需要做。
2、单击“免费评分”,弹出评分对话框。 网页滚动到免费评分处,按下F12建,默认情况下,打开浏览器调试界面,单击调试窗口最左上角的“选择”按钮,在网页中,对着“免费评分”四个字单击一下,然后在“元素窗口”将自动定位到“免费评分”四个字对应的html代码,如下图所示。

分析该html代码,发现 i 元素中有个img元素,就是那个点赞的小手,i就是个字体元素,该元素一般并不实现鼠标单击执行事件。继续分析这一段代码,发现 元素 i 是在另外一个超级链接 a 中,而超级链接最常见的就是单击执行事件操作,把完整的html超级链接元素复制下来:
[url=] id="ak_rate" title="评分表立场" data-snip-rule="258">
[img][/img]
免费评分" data-snip-rule="635">免费评分
[/url]
所以这个超级链接才是正主,i 元素只是作为超级链接的内容部分,超级链接其本身定义了一个“onclick”事件,当我们单击"免费评分" 四个字的时候,将会开始评分的操作,这里将弹出个对话框,如下图所示

现在我们就要用js来实现用户手动点击“免费评分”这个操作具体如下:


新建或修改标签,我这是修改标签,将名称改为“免费评分”,可以自行起名字,将网址改为:
javascript:document.getElementById("ak_rate").click();
最后保存即可,标签就创建好了。


此后单击“免费评分”标签,将会弹出免费评分的对话框,将不用去翻滚网页找“免费评分”链接按钮了。


这里解释一下:1、网址中字符“JavaScript:”表示这是JavaScript代码,简称为js代码,document.getElementById("ak_rate") ,表示选择网页中id="ak_rate"的元素,也就是那个超级链接a,“click()”表示启用其单击事件,也就是执行了:
注意:一般要执行事件的网页元素都会定义 id属性或则 class属性,以便被调用。如果这里超级链接没有定义 id属性,定义了class属性,比如:
[url=]class="ak_rate" title="评分表立场" data-snip-rule="258">
[img][/img]
免费评分" data-snip-rule="635">免费评分
[/url]
js代码要改为:
javascript:document.getElementByclassName("ak_rate").click();
注意:如果一个网页元素没有定义事件,比如这里的超级链接没有定义事件,没有“宋体">”这一句代码,则我们的js代码也是没有用的。
Onclick表示鼠标单击事件,由浏览网页的使用者单击鼠标左键调用该事件,js代码“javascript:document.getElementById("ak_rate").click();” ,作用就是用代码直接执行“免费评价”这个单击事件,和使用者单击“免费评价”执行代码等同。
小测试:制作“自动收藏”标签原理和“免费评分”一样,需要找到“收藏”所在超级链接的id或class。可以自己操作测试,细节不讲了,其js代码如下:
javascript:document.getElementById("k_favorite").click();
3、在评分对话框中,选择“吾爱币”,给一个吾爱币。
4、在评分对话框中,选择“热心值”,给一个热心值
5、在评分对话框中,选择“评分理由”或则自己输入评分理由,选择一个评分理由,或者自己输入一个
6、在评分对话框中,单击“确定”按钮
弹出了“免费评分”对话框,要做3-6这四个步骤。 按照讲过的查找网页元素id或class属性值的方法
第3步:给吾爱币,手动操作是单击下拉列表,选择一个值,在文本框中显示,对于js,可以直接给文本框赋值,对应代码如下:
document.getElementById("score2").value=1;
数值1就是给的吾爱币,可以自行调整。
第4步:给热心值。同理,js代码如下
document.getElementById("score6").value=1;
第5步:选择或输入评分理由,同理,无论是选择还是输入理由,最后都在id="reason"的文本框中显示,js设置该文本框即可。
document.getElementById("reason").value="感谢楼主的分享,十分感谢!";
第6步:在评分对话框中,单击“确定”按钮文字“确定”放在span元素中,该span元素作为按钮的内容,按钮设置了class=”pn pnc”,设置了事件“onclick”,所以js代码如下:
document.getElementsByClassName("pn pnc").click();


最后将这所有的js代码放在一起:
javascript:document.getElementById("ak_rate").click();document.getElementById("score2").value=1;document.getElementById("score6").value=1;document.getElementById("reason").value="感谢楼主的分享,十分感谢!";document.getElementsByClassName("pnc").click();


说明:
1、一个标签只需要在开头写上“javascript:”,来标识这是js代码即可。
2、每行js代码最后用“;”间隔。标签内的js代码不要换行,无用的空格都删除。


问题:将上面的代码,执行,只能打开评分对话框,其余没有反应,研究了一下,水平有限,只能进行如下的改动操作了。
具体如下:
1、建立标签1,比如“评分1”,只弹出评分对话框,js代码如下:
javascript:document.getElementById("ak_rate").click();


2、建立标签2,比如“评分2”,设置分数,js代码如下:
javascript:document.getElementById("score2").value=1;document.getElementById("score6").value=1;document.getElementById("reason").value="感谢楼主的分享,十分感谢!";
3、按下回车键。


按下回车键很无奈,本来第6步的js代码:document.getElementsByClassName("pnc").click(); 自己测试页面时是没有问题的,但是论坛就是没有效果。很奇怪。 这里请教大师们,怎么把这个用一个标签就实现了?而不是我这样分成三步,两个标签+回车。



宋体, 评分

atoms   
感觉这样太麻烦了,你在浏览器调试里找到对应的http请求,然后用fetch模拟发送一个请求,然后用油猴写个简单的脚本在每个回复那里添加一个按钮,点一下自动获取回复的id然后发送请求就可以了
痛痛痛痛
OP
  

atoms 发表于 2024-6-8 22:12
感觉这样太麻烦了,你在浏览器调试里找到对应的http请求,然后用fetch模拟发送一个请求,然后用油猴写个简 ...

正在学习处理,现在还不会!
KILLCALL   
直接优厚脚本
您需要登录后才可以回帖 登录 | 立即注册