今天在chrome上安装了Tampermonkey扩展,折腾一番后想起来给贴吧发帖框添加小尾巴。于是去尝试一番,现在成功了。
document.getElementsByClassName("poster_submit")[0].addEventListener('click', function(){ var ueditorAllP=document.getElementById('ueditor_replace').getElementsByTagName('p'); ueditorAllP[ueditorAllP.length-1].innerHTML+='<br><br>Servant Saber、召唤に従い参上した。'; }, true)
原理是给提交按钮添加一个事件,当点击它的时候,在输入框内最后一个P标签内(因为每次按enter换行都会产生一个新的P标签)的html代码中,追加小尾巴的html代码。注意不能使用innerText,因为这样的话,如果最后一个P标签内有图片,则图片会被文字替换,图片就没了。
PS:Tampermonkey可以引用外部js文件,格式是使用// @require,然后在后面加上js文件的url,如下:
// @require /f/keymaster.js
使用Tampermonkey给贴吧发帖加上小尾巴
JavaScript 中有一些特殊的字符,如果想要在字符串中使用,需要加上一个反斜线。
代码 输出结果
---------------------
\' 单引号
\" 双引号
\& 与符号
\\ 反斜线
\n 换行
\r 回车
\t 制表符
\b 后退
\f 换页符
JavaScript 转义符代码
使用js设置css属性的时候,属性名经常和css的有区别。例如css中的'backgroung-image',使用js设置的时候需要写成'backgroundImage'。下面就是JS和CSS属性的对照表:
CSS语法 (不区分大小写) | JavaScript语法 (区分大小写) |
border | border |
border-bottom | borderBottom |
border-bottom-color | borderBottomColor |
border-bottom-style | borderBottomStyle |
border-bottom-width | borderBottomWidth |
border-color | borderColor |
border-left | borderLeft |
border-left-color | borderLeftColor |
border-left-style | borderLeftStyle |
border-left-width | borderLeftWidth |
border-right | borderRight |
border-right-color | borderRightColor |
border-right-style | borderRightStyle |
border-right-width | borderRightWidth |
border-style | borderStyle |
border-top | borderTop |
border-top-color | borderTopColor |
border-top-style | borderTopStyle |
border-top-width | borderTopWidth |
border-width | borderWidth |
clear | clear |
float | floatStyle |
margin | margin |
margin-bottom | marginBottom |
margin-left | marginLeft |
margin-right | marginRight |
margin-top | marginTop |
padding | padding |
padding-bottom | paddingBottom |
padding-left | paddingLeft |
padding-right | paddingRight |
padding-top | paddingTop |
background | background |
background-attachment | backgroundAttachment |
background-color | backgroundColor |
background-image | backgroundImage |
background-position | backgroundPosition |
background-repeat | backgroundRepeat |
color | color |
display | display |
list-style-type | listStyleType |
list-style-image | listStyleImage |
list-style-position | listStylePosition |
list-style | listStyle |
white-space | whiteSpace |
font | font |
font-family | fontFamily |
font-size | fontSize |
font-style | fontStyle |
font-variant | fontVariant |
font-weight | fontWeight |
letter-spacing | letterSpacing |
line-break | lineBreak |
line-height | lineHeight |
text-align | textAlign |
text-decoration | textDecoration |
text-indent | textIndent |
text-justify | textJustify |
text-transform | textTransform |
vertical-align | verticalAlign |
css与js属性对照表
js的循环中可以使用continue跳过本次循环,使用break来跳出整个循环。
<script type="text/javascript"> for (var i = 0; i <= 10; i++) { if (i==5) continue; if (i==9) break; document.write(i+' '); }; </script>
上面的示例中,如果不干预循环操作,那么在页面上将会输出0-10这几个数字。但是干预之后,5不会出现,9和10也不会出现。因为循环到5的时候跳过了本次循环应该执行的操作,而到9的时候,又跳出了循环。
ps:if语句中如果条件后只有一句代码,可以省略花括号。
js跳过循环和跳出循环
js中的return,常见的有两种用法。一种是使用'return false'、'return true'来阻止或允许某个动作,代码如下:
<a href="http://www.saber.love/" onclick="return false">Saber酱的抱枕</a>
此时点击a标签不会做跳转动作。这个方法也常被用在表单验证的提交过程中。
另一种使用方法是用return返回所需的值。
<script type="text/javascript"> function add (x,y) { var sum=x+y; return sum; } alert(add(1,3)); </script>
上面的示例里,add函数计算了两个参数相加之和,然后返回结果(sum的值)。这样,我们可以在调用这个函数的时候直接取得结果sum。如果不返回sum的值的话,想要弹出sum值,就只能在函数内操作了,因为函数外无法获取到sum的值(仅讨论此例)。
话说,以上两种方法有时候也可能需要结合起来使用。例如:
<a href="http://www.saber.love/" onclick="return skip(this.innerText)">Saber酱的抱枕</a> <a href="http://www.baidu.com/" onclick="return skip(this.innerText)">百度</a> <script type="text/javascript"> function skip (x) { if (x=='Saber酱的抱枕') {return false;}else{return true} } </script>
当点击链接的时候,是执行'return false'还是执行'return true',是由函数内return返回的值所决定的。
js中return的作用
看到别的网站,有的选项卡都是用传参的方式切换的,避免了代码重写,于是我也试着做了一个。
<script type="text/javascript"> function setTab (tabTitId,tabPre,tabNum) {//参数是tab标题的id,本组tab的公共前缀,本组tab的个数。 //把字符串传参的时候,要加单引号。不是字符串也不是数字的时候,传递的是页面的元素。 for (var i = tabNum; i > 0; i--) { document.getElementById(tabPre+i+"_tit").className="tab_Tit_off";//所有标题设置className document.getElementById(tabPre+i+"_box").style.display="none";//隐藏所有box }; document.getElementById(tabTitId).className="tab_Tit_on";//对当前标题设置className document.getElementById(tabTitId.replace("tit","box")).style.display="block";//显示当前标题对应的box } setTab('tab1_1_tit','tab1_',4);//页面载入后对第一个tab执行一次 setTab('tab2_1_tit','tab2_',3);//页面载入后对第一个tab执行一次 </script>
选项卡标题和内容的id使用相同的前缀和有规律的序号,再把当前标题的id、选项卡的前缀、个数传递到函数里。class只和样式有关。
通过传参进行tab选项卡切换一例
使用了js的substring()方法截取字符串,并使用定时器控制字符增加的间隔时间。代码如下:
<div class="textbox" style="text-align: center;font-family: Microsoft YaHei;"></div> <script type="text/javascript"> var textword="Darkness cannot drive out darkness; only light can do that. Hate cannot drive out hate; only love can do that."; var textbox=document.getElementsByClassName("textbox")[0]; var textlength=1; var startAdd; function textwordAdd () { textbox.innerText=textword.substring(0, textlength); if (textlength<=textword.length) { textlength++; }else{ clearInterval(startAdd); }; } startAdd=setInterval(textwordAdd, 100); </script>
定时器单独设置了一个变量。如果直接用window.setInterval和window.clearInterval的方式的话,清除定时器是无效的。
参考:JS截取字符串substr 和 substring方法
js制作文字逐字出现的效果
js的三种对话框:
1.alert();弹出消息
2.confirm(); 返回一个布尔值
3.prompt(); 获取输入的内容
<script type="text/javascript"> function liwu () { alert("这是送给你的小礼物~"); var aa=confirm("请问您接受礼物吗?");//返回布尔值,也可直接写在判断条件中 if(aa){ var name=prompt("请输入你的姓名",""); //变量储存了prompt的值 if (name==""||name==null) { alert("你是小狗!"); } else{ var songName=prompt("你最喜欢的歌曲是什么?",""); if (songName==""||songName==null) { alert("哼,拜拜!"); } else{ alert(name+" 我点一首你最喜欢的《"+songName+"》作为送给你的礼物!") }; }; } else{ alert("礼物接受失败!"); }; } </script> <a href="" onclick="liwu()">接收礼物</a>
js弹出对话框的使用
<script type="text/javascript"> function tanchu (t) { alert(t); } </script> <div id="a" onclick="tanchu(this.innerText)">雪见仙尊</div> <div id="b" onclick="tanchu(this.innerText)">小鸟游六花</div>
慢慢学习Orz