textarea标签点击后自动第一位开始输入_Chrome插件第二弹:开始动手!

99386239789e2d6427699f9044ce022b.png

之前写过一篇文章:

LeoNaN:利用chrome扩展,让浏览器执行我们的脚本​zhuanlan.zhihu.com
0ae43f520d75ddf24e93ca823a9daa5b.png

讲的是怎么把js打包成chrome插件。然后有同学来问,那脚本怎么写~emmm。。。大概就描述一下,写给没有基础的同学~

首先呢,建议同学们看看这个,大概了解下HTML、JS、CSS都是干什么的:

LeoNaN:HTML5初窥一:HTML、CSS、JS都是啥?​zhuanlan.zhihu.com

chrome插件简单一点,其实就是用我们自己写的JS,去操作某个网站上的HTML。上面介绍的JS部分中,我其实也是利用JS修改了HTML的内容。那么这篇文章我就大概说一说,常用的简单的控制方法。

那么如何使用JS控制HTML呢?对于简单的情况来说,大体上来说就三步:0、梳理思路。1、把要操作的东东叫来。2、给这个东东捏脸。听起来好简单~下面我以某度所谓例子。

〇、梳理思路

这里用0开始数数真的不是我装,而是想在正式干活前说点别的。。。

chrome插件并不是什么神奇的魔法师,可以莫名其妙就能把活干了。实在点说,其实就是把我们手工在网页上做的工作,一步一步的用代码录下来,以后每次直接播放这段录像而已。所以我们真正开发之前,需要明确一下,实现这些功能,我们人工点击的话,都需要如何操作。比如说我要自动登录,那就分为三步:输入用户名、输入密码、点击登录按钮。再比如说我要自动抢会议室,那就是N步:刷新页面、看看会议室放没放出来、放出来了就填写资料并提交、没放出来就继续刷新。大概就是这个意思吧,后面才是真正的写脚本的时候。


一、把要操作的东东叫来。

1、在大喊“狗蛋快来!”之前呢,先介绍几个HTML里面起名字的方式,这样子我们才知道他叫什么名字呀~常用的几种方式如下:

a、id:大概类似我们的身份证号,原则上来说,一个网页内的id是不重复的。所以如果发现了咱们要找的东东有id,就可以非常准确的把他叫过来啦!

b、class:class字面意思是分类。比如说“三年二班”就是一个分类,这个分类下有好多好多同学。比如说“中国人”也是一个分类,一叫叫来了14亿。。。所以我们通过class去找人的话,一般来说会找来多个(1个或0个也当作多个好了),所以通过这种方式叫人的话,还需要在把他们都叫来之后,告诉他们,咱们其实是想叫第几个人。比如说我们会叫“来来来,三年二班站第四个的那位同学给我出来!”

c、name:这个name其实和class差不多,在HTML里面有其他的用处。不过对于叫名字来说,也可以拿来用用。

d、什么都没有:啥!什么都没有不是完犊子了。。。啊哈哈其实就算他什么名字都没有,我们还有一个大招:利用tag。啥是tag?说人话就是标签。我们看HTML代码里总有<>这种尖括号,这个就是标签。HTML的内容都会在某个标签里,所以就算他没有名字,我们也可以利用这个与生俱来的标签找到他。比如说:知乎里面拥有音乐标签的,第三个那个人过来让我关注一下。

2、举个例子

以某度为例,假如我要做个自动搜索。我们如何把需要的东东都叫来?

首先呢,先在chrome浏览器中打开某度的网址,打开之后大概是这个样子:

7ebe75f85c1d1cc486630bb8a1decc74.png

很明显就能知道,这里我们需要叫过来的东东有哪些:文字输入框、搜索按钮。这里有一个小技巧:鼠标移动到想要的东东上面,点击右键。如图:

3d5a8b36d3102a720458b2bed82f6ed1.png

点击检查(不同版本的浏览器这里不一样,有的是“审查元素”)。点击之后就发现浏览器多了一个框框(虽然出现的位置可能与我的不一样),如图:

4cc5b9419df91b85ee21245d85aefc08.png

这个框框里默认有一段是蓝色的背景,这个地方对应的就是网页中的输入框啦~看看这里的内容,为了方便看我复制一下:

<input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">

那怎么叫这个东东过来呢?仔细看看,竟然id和class都有!那显然用id叫会比较准确一点,毕竟都有唯一的身份证号了我还用class叫来一群干啥= =

同理,搜索按钮也可以右键看一看:

<input type="submit" value="百度一下" id="su" class="btn self-btn bg s_btn">

是不是也有id?完美。

好了那么下面就是那种不用理解,但是会用就凑合可以搞的部分:

这几种点名方式用代码怎么写?假设目标是输入框,我们起个名字叫shurukuang:

ID:var shurukuang = document.getElementById("kw");

CLASS:var shurukuang = document.getElementsByClassName("s_ipt")[0];(注意后面的0,表示是有这个class的第一个人。因为class可以重复,所以最好在console——即右键出现的框框里有一个叫console的标签——里执行一下,依次找找到底第几个class是我们需要的)

32fda4e68c410577206a17ec7dac3201.png

比如这个比较简单,第一个就是,所以后面写0.

NAME:var shurukuang = document.getElementsByName("wd")[0]; name与class类似。

TAG:var shurukuang = document.getElementsByTagName("input")[0]; tag也要看是第几个。

那后面的搜索按钮,我就直接用最简单的ID去叫了:

var anniu = document.getElementById("su");

到这里,我们就完成了第一步。


二、给这个东东捏脸

这步是什么意思呢,就是说,我们要开始对这个东东进行一些改变。比如我们如果想自动搜索的话,其实就两个动作:改变输入框的值、点击提交按钮。所以我们依次改变shurukuang和anniu。

1、改变shurukuang里面的值:

shurukuang.value="作者为什么这么帅?";

b21bf02413ab5ca8b913c85c596c9354.png

如果执行成功的话,大概就是这个效果。

不过这里需要注意的是,input标签是通过value修改的,其他的标签不一定。。。比如textarea是innerHTML,select是value,radio是checked等等。所以遇到要修改的标签,还是百度一下比较好~

2、点击anniu这个按钮:

这个其实很简单,有现成的方法:

anniu.click();

其实百度在我们修改完输入框后就会自动搜索了。。。但是没关系,反正以后会用到这个= =

3、扩展:

其实如果有一些HTML基础的话,我们甚至可以在网页里在插入一个小页面,当做设置用。比如说刷新频率啊,或者要填写的内容啊,登陆用户密码啊之类的,然后存在本地的localStorage里,自动化脚本跑的时候再去读取配置。这块说实话要是我自己用我都懒得写,只有打包给别人时候才写= =自己用就直接改代码了= =


三、最后:

总结一下,实现自动搜索的所有代码如下:

var shurukuang = document.getElementById("kw");

var anniu = document.getElementById("su");

shurukuang.value="作者为什么这么帅?";

anniu.click();

只有四行,甚至还可以变成两行:

document.getElementById("kw").value="作者为什么这么帅?";

document.getElementById("su").click();

哇这个例子真的好简单。。然而真实情况要改的东东一般都比较多= =不过大概原理差不多,还好还好。。。

接下来呢,就是想办法让浏览器可以自动的执行我们下的代码,可以打包成chrome插件,这样浏览器就会自动执行啦~详见我的另一篇文章(好像开头放过链接了,就这样吧懒得删了):

LeoNaN:利用chrome扩展,让浏览器执行我们的脚本​zhuanlan.zhihu.com
0ae43f520d75ddf24e93ca823a9daa5b.png

如果看完这篇文章,觉得自动脚本好智障做不了什么的话,可以看看这篇文章:

LeoNaN:干货:用js实现的简单验证码识别​zhuanlan.zhihu.com
c59a1e799efd815d87b1f0a53defcf86.png

是的,这个东东大的方面帮网友抢过房子,小的方面也可以打个卡啥的。。。

PS:我只是好玩,啥都没干过 = =

以上~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用,"editable_property"是指任务数据对象的属性,而不是灯箱部分或左侧网格的列。如果要使其可从灯箱设置,需要将"editable_property"设置为控件映射到的同一属性。例如,使用以下代码将"editable_property"设置为"some_property": gantt.config.lightbox.sections = [ { name:"description", height:38, map_to:"some_property", type:"textarea", focus:true }, .... ]; gantt.config.editable_property = "some_property"; 根据引用,"readonly"属性不会阻止通过API方法实现的操作。如果你希望在只读模式下禁用特定操作,可以在回调函数中手动检查是否启用了只读模式。例如,以下是如何在单击自定义按钮时阻止添加任务的功能: gantt.config.readonly = true; gantt.config.columns = [ { name: "text", label: "Task name", width: "*", tree: true }, { name: "start_date", label: "Start time", align: "center" }, { name: "duration", label: "Duration", align: "center" }, { name: "add", label: "1", width: 44 }, { name: "add_custom", label: "2", width: 44, template: function (task) { return "<div class='custom_add' οnclick='customAdd(" + task.id + ")';></div>" } } ]; function customAdd(parentId) { if (gantt.config.readonly){ return; } } 根据引用[3],如果您想为只读任务显示灯箱,可以使用"gantt.showLightbox(id)"手动调用它。例如,以下代码在双击任务时显示灯箱: gantt.attachEvent("onTaskDblClick", function(id,e){ gantt.showLightbox(id) return true; });

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值