15楼#
发布于:2020-11-06 00:32
lonely_8:我这里已经可以了,https://www.zhihu.com/signin?next=%2F 刚刚发现知乎上的登录按照你的方法实现不了填单,不知道知乎有没有什么方法可以解决呢? |
|
16楼#
发布于:2020-03-05 16:30
|
|
17楼#
发布于:2020-03-05 16:03
|
|
18楼#
发布于:2020-03-05 15:37
|
|
19楼#
发布于:2020-03-05 15:23
|
|
20楼#
发布于:2020-03-05 14:51
lonely_8:const autoFill = (selector, value) => {谢谢大佬解答! 关于微博自动填单,我刚刚试了一下用延时可以成功。 function fill(){ document.querySelector('[name="username"]').value='帐号'; document.querySelector('[name="password"]').value='密码'; } setTimeout(fill,5100);你刚刚回复的代码是针对bathome的弹出登录框而不是微博吧?因为我刚刚试验了一下,微博填了表单,但还是被清空了,而bathome是适用的。所以设想下微博用延时的话不就解决了吗?只是延时加载会有个不确定性,假设我页面是超过5秒扔未加载的话,那GM填单还是早于网站表单生成。 |
|
21楼#
发布于:2020-03-05 14:03
const autoFill = (selector, value) => { const animationName = btoa(Math.random()).replace(/[^a-z]/ig, 'a'); const style = document.createElement('style'); style.textContent = ` @keyframes ${animationName} {from{opacity:.9;}to{opacity:1;}} ${selector} {animation: ${animationName} 1ms;} `; const animationstart = (evt) => { if(evt.animationName !== animationName) return; const input = document.querySelector(selector); input.focus(); input.value = value; input.dispatchEvent(new Event('input', { bubbles: true })); removeEventListener('animationstart', animationstart); style.remove(); } addEventListener('animationstart', animationstart); document.head.appendChild(style); } autoFill('[name="username"]', '帐号'); autoFill('[name="password"]', '密码'); 由于 GM 脚本运行时间早于表单生成的时间,所以肯定是不能实现填表的。 js基础学习,如果英语比较好可以看 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide 或者中文版的 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide 建议英文原版的,中文有些翻译比较老旧没跟上原版的更新。 英语基础相对弱的可以看, https://www.w3school.com.cn/ 我也是从这里自学开始,有人说上面有些教程错误,我当初反正是没发现。 我当初入门的目的也像你一样,为了实现一些功能方便自用,参考别人写的相似功能的代码,自己摸索着写。 光看教程真的没用,重要的是实践,不懂的地直接面向搜索引擎学习,才能深刻地记下来。 |
|
22楼#
发布于:2020-03-05 01:53
lonely_8:const autoFill = (selector, value) => {感谢!还有就是某些网站点击登录按钮,并不是跳转到登录页面,而只是在当前页面弹出一个登录框,例如 http://www.bathome.net/。 按 document.querySelector('[name="username"]').value='用户名'; 这样的方法并不会填入帐号密码信息的,不知有何办法监听这个登录弹出框,然后再自动填入表单呢? 还有个就是,在weibo.com登录界面,下面的代码在GM脚本里是不会自动填入表单的,然而在控制台输入后却又能填入,不知具体是什么原因呢? if (location.hostname.indexOf('weibo.com') != -1) { window.addEventListener('load',function(){ document.querySelector('[name="username"]').value='帐号'; document.querySelector('[name="password"]').value='密码'; },false); }最后就是,不知学习javascript有什么书籍或网站推荐的吗?本人纯小白一个,对javascript很感兴趣,因为用firefox加GM脚本真是如虎添翼有如神助,但是苦于没有基础,只得在论坛上拿来主义,颇不好意思的。 |
|
23楼#
发布于:2020-03-05 00:20
const autoFill = (selector, value) => { const input = document.querySelector(selector); input.value = value; input.dispatchEvent(new Event('input', { bubbles: true })); } autoFill('#login-username', '帐号'); autoFill('#login-passwd', '密码'); b站登录框通过监听输入事件才记录输入信息, 所以需要在更改值后手动触发一下输入事件。 |
|
上一页
下一页