代码更加智能化,能够直接保护整个站,而不再是单个页面,直接把代码放到自己的网站上,如果是博客建议放到header,如果是单页面直接放到首页即可,也可以单独建一个js文件把代码放入进去,然后引入js文件就行了。vara='retrtrfdcfvvvv';varym=window.location;varym2='这里添加你需要保护的网站域名例如bingdou.net不加http';varym3=String(ym);functionsuan(a){varre=a.substring(0,2);vartr=a.substring(2,4);vartr2=a.substring(4,6);varfd=a.substring(6,8);varcf=a.substring(8,10);varvv=a.substring(10,12);varvv2=a.substring(12,14);re='h';tr='t';tr2='t';fd='p';cf=':';vv='/';vv2='/';varp=re+tr+tr2+fd+cf+vv+vv2;returnp;}if(ym3.indexOf(ym2)==-1){alert(ym2);//varav=ym3;varb=suan(a)+'这里添加如果域名检测失败需要跳转的地址例如bingdou.net不加http'+'/';window.location=b;}
有时候网页需要用到屏蔽功能,最常用的就是屏蔽查看代码和右键了,下面是一些常用的代码:<script>//屏蔽鼠标右键、Ctrl+N、Shift+F10、F11、F5刷新、退格键functiondocument.oncontextmenu(){event.returnValue=false;}//屏蔽鼠标右键functionwindow.onhelp(){returnfalse}//屏蔽F1帮助functiondocument.onkeydown(){if((window.event.altKey)&&((window.event.keyCode==37)||//屏蔽Alt+方向键←(window.event.keyCode==39))){//屏蔽Alt+方向键→alert("不准你使用ALT+方向键前进或后退网页!");event.returnValue=false;}if((event.keyCode==8)||//屏蔽退格删除键(event.keyCode==116)||//屏蔽F5刷新键(event.ctrlKey&&event.keyCode==82)){//Ctrl+Revent.keyCode=0;event.returnValue=false;}if(event.keyCode==122){event.keyCode=0;event.returnValue=false;}//屏蔽F11if(event.ctrlKey&&event.keyCode==78)event.returnValue=false;//屏蔽Ctrl+nif(event.shiftKey&&event.keyCode==121)event.returnValue=false;//屏蔽shift+F10if(window.event.srcElement.tagName=="A"&&window.event.shiftKey)window.event.returnValue=false;//屏蔽shift加鼠标左键新开一网页if((window.event.altKey)&&(window.event.keyCode==115)){//屏蔽Alt+F4window.showModelessDialog("about:blank","","dialogWidth:1px;dialogheight:1px");returnfalse;}if(window.event&&window.event.keyCode==123){alert("F12被禁用");event.keyCode=0;event.returnValue=false;}if(window.event&&window.event.keyCode==13){window.event.keyCode=505;}if(window.event&&window.event.keyCode==8){alert(str+"\n请使用Del键进行字符的删除操作!");window.event.returnValue=false;}}</script>
利用JS脚本从数组中随机取出多个不同的元素,其实非常的简单。只需要打要处理的数组进行打乱,然后在打乱的数组中截取指定的元素即可,下面是案例,大家可以参考一下。JS从数组中随机取出多个不同元素的方法1、定义一个打乱数组的方法functionshuffle(array){varm=array.length,t,i;//如果还剩有元素…while(m){//随机选取一个元素…i=Math.floor(Math.random()*m--);//与当前元素进行交换t=array[m];array[m]=array[i];array[i]=t;}returnarray;}2、调用打乱数组的方法arr=['1','2','3','4','5'];varmessage=shuffle(arr);console.log(message);打印结果:['4','2','3','5','1']3、数组已经被打乱,直接利用JS代码进行截取接口message=message.slice(0,3);//截取数组中的前三个元素console.log(message);//['4','2','3']完整的示例代码:/**JS打乱数组的函数*输入一个指定的数组*返回打乱元素的数组*站三界导航*zhansanjie.com*/functionshuffle(array){varm=array.length,t,i;//如果还剩有元素…while(m){//随机选取一个元素…i=Math.floor(Math.random()*m--);//与当前元素进行交换t=array[m];array[m]=array[i];array[i]=t;}returnarray;}//定义一个数组arr=['1','2','3','4','5'];//打乱数组中元素的排序varmessage=shuffle(arr);//截取打乱后的数组message=message.slice(0,3);console.log(message);
js中截取数组时要使用slice()方法,它可以从指定的数组中返回选定的元素,而不用改变原有的数组,非常的简单方便。js中slice()方法slice():从已有的数组中返回选定的元素,而不用改变原有的数组。语法:array.slice(start,end)参数:start:规定截取的位置,如为负数表示从数组的末尾开始。end:截取数组元素的结束位置,如不填写则表示整个数组,如为负数则表示从数组尾部开始,-1为最后一个,-2倒数第二个JS截取数组的方法下面列出几个使用jsslice()方法来截取数组的示例。例1:slice截取数组中的前三个元素vararr=["mochu","yueguang","zhansanjie.com","站三界导航","百度搜索","baidu.com"];//结束数组中的前三个元素varmyarr=arr.slice(0,3);console.log(myarr);//["mochu","yueguang","zhansanjie.com"]例2:slice截取数组中最后的二个元素varmyarr=arr.slice(-2);console.log(myarr);//['百度搜索','baidu.com']例3:slice截取数组中倒数第三个(截取)到最后一个(不截取)的元素varmyarr=arr.slice(-3,-1);['站三界导航','百度搜索']
1、js禁止alert弹窗的方法示例代码://feiniaomy.com王朝235网址导航//这是第一个弹窗alert('这是第一个弹窗');//禁止alert弹窗window.alert=function(){returnfalse;}//这是第二个弹窗,不会弹出的alert('这是第二个弹窗');2、js禁止alert弹出,并将内容写入到调试栏中示例代码://feiniaomy.com王朝235网址导航//这是第一个弹窗alert('这是第一个弹窗');//禁止alert弹窗window.alert=function(s){console.log(s);}//这是第二个弹窗,不会弹出的,但会以通过console打印出来alert('这是第二个弹窗');
示例代码:注:以下代码来自网络,稍微做了一些修改,已测试正常可用!/***判断输入的地址是否为顶级域名*站三界导航zhansanjie.com*是顶级域名返回true否则返回false**/functionis_url(str){str=str.toLowerCase();varhz='.com,.net,.org,.biz,.info,.name,.mobi,.tel,.xxx,.ac,.ag,.am,.asia,.at,.co,.be,.bz,.ca,.cc,.ch,.cm,.cx,.cz,.de,.ac.cn,.bj.cn,.sh.cn,.tj.cn,.cq.cn,.he.cn,.sx.cn,.nm.cn,.ln.cn,.jl.cn,.hl.cn,.js.cn,.zj.cn,.ah.cn,.fj.cn,.jx.cn,.sd.cn,.ha.cn,.hb.cn,.hn.cn,.gd.cn,.gx.cn,.hi.cn,.sc.cn,.gz.cn,.yn.cn,.xz.cn,.gs.cn,.qh.cn,.nx.cn,.xj.cn,.tw.cn,.mo.cn,.com.cn,.net.cn,.sn.cn,.org.cn,.hk.vc,.hk.cn,.sale,.wang,.xyz,.pro,.xin,.app,.vip,.top,.cn,.tv,.hk,.ng,.la,.in,.pw,.sx,.me,.gg,.gs,.st,.us,.dk,.ec,.es,.eu,.fm,.fr,.gd,.gl,.gr,.gy,.hn,.ht,.im,.io,.it,.je,.jp,.ki,.lc,.li,.lu,.lv,.md,.mg,.mn,.ms,.mu,.mx,.my,.nl,.nu,.pe,.ph,.pl,.pm,.se,.sh,.so,.tc,.tf,.tk,.tl,.tm,.to,.tw,.co.uk,.uk,.vc,.vg,.wf,.ws,.yt,.ltd,.men,.bid,.fi,.lt,.games,.news,.work,.space,.win,.link,.store,.co.jp,.edu,.ren,.date,.site,.red,.kim,.cn.com,.club,.gp,.is,.pt,.one,.tt,.ai,.ma,.ee,.su,.run,.car,.fish';hz=hz.split(",");varqm=str.substr(0,str.indexOf("\."));varhm=str.substr(str.indexOf("\."));returnstr.length>0&&hz.includes(hm)&&qm.match(/^[a-z0-9\u4e00-\u9fa5]+([a-z0-9\u4e00-\u9fa5-]*(?:[a-z0-9\u4e00-\u9fa5]+))?$/i)?true:false;}函数调用console.log(is_url('zhansanjie.com'));//trueconsole.log(is_url('zhansanjie.com/'));//falseconsole.log(is_url('zhansanjie.com/index.html'));//falseconsole.log(is_url('www.zhansanjie.com'));//false
js加载出现乱码的原因是什么,很多人会说是因为编码不统一,以前的我也是这么想的,其实不然,js加载页面出现乱码的真正原因是没有正确的告诉浏览器其本身的编码。也就是说,如果本身是utf-8,就要告诉浏览器“我”的编码为utf-8,如果是别的就要告诉浏览器是别的。也就是,如果html页面本身的编码其实是可以和js的编码不一样的。而为什么会出现乱码,就是因为有中文,只有有中文字符的时候才可能出现乱码。下面就说一下我总结的三种解决js加载内容乱码的方法!首先申明,我这里说的js乱码是引入js文件,并不是直接将js写在了页面当中!第一种方式——编码统一我们以前觉得出现乱码的原因是因为编码不统一,就是因为我们设置编码统一之后,就解决了问题,所以,让html和js的编码统一,是最简单的一个乱码解决方式,原因是什么,是因为,如果你在加载js的时候,并没有声明js的编码格式,那么浏览器会默认的按照当前html的编码格式进行解析引入的js文件,如果你的js和本身页面编码不一样,并且js中引入了中文字符,那么肯定会出现乱码的。要知道,程序都是笨笨的。第二种方式——在引入js的标签中加入charset属性我们一般情况下引入js是这样引入的:<scripttype="text/jscript"src="xx.js"></script>这样引入,那么这个xx.js就会以本身页面的编码进行解析,而如果两个的编码不一样,如果这个js是gbk的编码,那么我们可以这样写<scripttype="text/jscript"charset="gbk"src="xx.js"></script>那么,只要是保证这个js文件的确是gbk或者对应的,你自己写的编码,那么无论在哪种编码的页面中引用这个js,都不会出现编码问题,这样写才是最规范的,第一种方式会出现一种情况,就是有很少情况下,由于一些不规范的原因,我们会发现即使是编码统一的时候,也会出现乱码,那么我们最好就是用第二种方式来写。第三种方式——用服务器语言声明header头信息这种方式是比较少见的一种方式,适合某些特定的情况。编码信息都是在头信息中声明的。而js本身并没有像htmlmate标签这样的声明头信息的标签,所以要借助服务器语言,我是学php的,其header(“Content-Type:text/html;charset=gb2312″);就可以声明头信息,而如何写这个js,就是把js内容写在php文件中,这里就有一个知识点,就是js文件并不一定非写在js为后缀的文件中,其实可以写的服务器文件(php文件等)中,php以<??>来包括服务端解析的代码,而之外的或者echo输出的代码都会发送到客户端,所以,我们将js代码写到<??>外部或者直接echo出来,那么这个js代码同样可以起作用,这就是我们会发现,我们很多接口等程序,明明是script标签,引入的却是一个php文件,或者其他的服务端文件,就是这个道理,这样来做,就更加的灵活了,因为我们可以借助服务端语言,进行读取数据库等等更为复杂的操作,让这个js代码更加多样也更加灵活,实现更加复杂的功能,比如我们<scripttype="text/jscript"charset="gbk"src="xx.php"></script>在这个xx.php写<?$ip=getenv('REMOTE_ADDR');echo"alert($ip);";?>这样我们访问这个html页面,就会弹出ip地址,我们就可以对他进行其他操作等。当然,既然是连接服务端文件,就不能是直接双击打开这个html了,一定是通过浏览器访问才可以,或者是连接这个php文件的src要写http形式,目的就是保证这个php文件要是通过服务器解析访问的,如果你这样写相对目录的形式连接php,你直接打开html,就相当于直接打开了这个php文件,而不是通过http访问的,这个php是不能被解析的。讲的复杂了,但是这是一个很重要的知识点。如果单从乱码而言,这种引用js文件的方式适合我们已经引用了,不能再修改这个引用文件了,比如我们在一些外链站发了文章,不能再修改了,那么,我们可以修改连接的我们网站上的这个js文件,当前前提是,连接的是服务端文件,我们就可以通过这样的方式解决。
不少网站技术或者博客上有这样的处理,当我们复制代码的时候,会自动加上一段本信息版权为XXXX,这是怎么实现的呢?其实实现的方式很简单,可以在我的网站页面上绑定一个copy事件,当你复制文章内容的时候,自动在剪切板文字后面加上一段版权声明。既然有的网站已经添加了,也可以手动删除,其实意义不是很大,但是作为技术人员大家都是靠代码技能吃饭的,可以体会到写代码的不易,相信一定会尊重知识劳动成果,保留出处等版权信息的。效果示例:代码示例:<script>//监听整个网页的copy(复制)事件document.addEventListener('copy',function(event){//clipboardData对象是为通过编辑菜单、快捷菜单和快捷键执行的编辑操作所保留的,也就是你复制或者剪切内容letclipboardData=event.clipboardData||window.clipboardData;//如果未复制或者未剪切,则return出去if(!clipboardData){return;}//Selection对象,表示用户选择的文本范围或光标的当前位置。//声明一个变量接收--用户输入的剪切或者复制的文本转化为字符串lettext=window.getSelection().toString();if(text){//如果文本存在,首先取消文本的默认事件event.preventDefault();//通过调用常clipboardData对象的setData(format,data)方法;来设置相关文本//setData(format,data);参数//format//一个DOMString表示要添加到dragobject的拖动数据的类型。//data//一个DOMString表示要添加到dragobject的数据。clipboardData.setData('text/plain',text'\n\n张无忌版权所有');}});</script>
有这么一个数组:constarr=[{id:1,value:2},{id:2,value:3},...];想删除数组里id=8的元素,如何方便快捷的实现。findIndex findIndex() 方法返回数组中满足提供的测试函数的第一个元素的索引。否则返回-1。arr.splice(arr.findIndex(item=>item.id===8),1)这个有问题,假如返回-1则直接把数组的最后一项给删除了,所以需要判断存在(不为-1)才执行。filterfilter() 方法创建一个新数组,其包含通过所提供函数实现的测试的所有元素。arr=arr.filter(({id})=>id!==8);封装一个遍历的方法arr.forEach((val,i)=>{if(val.id===8){arr.splice(i,1)}})
客户定制了一个IPV4格式的IP地址在线查询的工具,需要用户在前台输入IPV4格的IP地址,为了防止用户输入的IPV4格式的IP错误,又减少后端的服务器资源的浪费,就想到了先在前台用JS脚本判断一下,用户输入的IPV4地址是否合法。js代码判断IP地址是否合法例1:下面利用js脚本来效验ip地址的合法性,是用的正则表达式的方式,大家可以参考一下。js示例代码:/**#判断IP地址是否合法,仅支持IPV4*输入IP地址*如果合法返回true,如果不合法返回false*zhansanjie.com**/functionis_ip(ip){varreg=/^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/returnreg.test(ip);}使用函数console.log(is_ip('127.0.0.1'));//trueconsole.log(is_ip('192.163.1.1'));//trueconsole.log(is_ip('172.16.2666.2'));//false例2:下面的方法要简单的很多,直接把ip地址转成数组,然后再去判断。示例代码:/**#判断IP地址是否合法,仅支持IPV4*输入IP地址*如果合法返回true,如果不合法返回false*zhansanjie.com**/functionis_ip(ip){ip_arr=ip.split('.');if(ip_arr.length!=4){returnfalse;}for(i=0;i<ip_arr.length;i++){if(ip_arr[i]<0||ip_arr[i]>255){returnfalse;}}returntrue;}函数使用://zhansanjie.comconsole.log(is_ip('127.0.0.1'));//trueconsole.log(is_ip('192.163.1.1'));//trueconsole.log(is_ip('172.16.2666.2'));//false