使用用户脚本,如你所愿改造网页(2)-在2047发帖时自动排版
上一篇使用用户脚本,如你所愿改造网页(1)-解决友站敏感词 介绍了一些最基本的概念,如何找到页面上的元素并改变它们的属性。
除此之外,对于网页来说还有一个非常重要的概念就是事件。这个可以理解为对于某个元素来说,当满足一定的条件下,对应的代码就会触发。例如,点击按钮,敲下键盘,鼠标放到某个图片上,滚动滚轮,等等。利用这个可以在用户执行指定操作时运行一段代码。一般这些代码都是一个函数,以“on”开头。比如onclick,onscroll,onmousemove等等
一个比较常见的困扰在2047发帖的问题是markdOwn语法与一般输入习惯的不同。比如你若按照平时习惯只用一个换行符分段,会发现文字并没有如你所愿,而是连在了一起。习惯可能一时很难改变,不过我们可以用脚本在发帖的时候自动排版。
还是老步骤,先找到我们需要操作的对象,然后改变他们的属性。这次涉及到的有输入文本的区域textarea,还有回复的按钮button 对于发表新帖或者回复已有的帖子,这部分是通用的。
查看代码如下:

这两个元素都有唯一的属性“id”,所以我们可以用另一个函数dOcumҼnt.gҼtҼlҼmҼntById()来找到这两个元素
比如:

站长已经定义了点击按钮提交内容时将会发生的事情,而我们要做的是在这之前插入一段内容。一个比较容易理解的实现方式是先把站长部署的代码存到一个变量里,然后用我们自己定义的内容覆盖掉原来的代码,在自定义的代码执行之后再执行之前存下来的代码.
因为在2047发帖支持一部分html的标记,所以我们自己要定义的部分就是获取textarea里面我们已经输入的部分,把换行符换成html标记br,这样只要一个换行符就可以换行了。textarea的value属性是已经输入的内容,返回值是一个字符串,字符串可以用内置replace方法置换指定的内容。对于替换多个指定的对象,要用正则表达式。
