常用方法(算法)使用总结

常用方法(算法)使用总结

一,浏览器禁用常规方法

1,禁用右键

1 document.oncontextmenu = function(){
2     event.returnValue = false;
3 }
4 // 或者
5 document.oncontextmenu=new Function("event.returnValue=false"); 
6 // 或者直接返回整个事件
7 document.oncontextmenu = function(){
8     return false;
9 }

2,禁用网页上选取内容

1 document.onselectstart = function(){
2     event.returnValue = false;
3 }
4 // 或者
5 document.onselectstart=new Function("event.returnValue=false");  
6 // 或者直接返回整个事件
7 document.onselectstart = function(){
8     return false;
9 }

3,禁用网页上选取内容

1 document.oncopy = function(){
2     event.returnValue = false;
3 }
4 // 或者
5 document.oncopy =new Function("event.returnValue=false");  
6 // 或者直接返回整个事件
7 document.oncopy = function(){
8     return false;
9 }

同时也可以直接加在body上

1  <body oncontextmenu = "return false" ></body>
2  <body onselectstart = "return false" ></body>
3  <body oncopy = "return false" ></body>
4  <!-- 方法一致 写法不一样 -->
5  <body oncontextmenu="event.returnValue=false" onselectstart="event.returnValue=false" oncopy="event.returnValue=false">

二,web端获取客户端IP

 1      getlocalIP = (callback) => {
 2         let PeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection
 3         let peer = new PeerConnection({
 4           iceServers: []
 5         })
 6         peer.createDataChannel('')
 7         peer.createOffer().then((offer) => {
 8           peer.setLocalDescription(offer)
 9         })
10         peer.onicecandidate = function (e) {
11           if (e.candidate) {
12             let reg = /([0-9]{1,3}(\.[0-9]{1,3}){3})/
13             e.candidate.candidate.split('\n').forEach((str) => {
14               str = reg.exec(str)
15               let IP = ''
16               if (str && str.length > 1) {
17                 IP = str[1]
18               }
19               if (callback && typeof callback == 'function') {
20                 callback(IP)
21               }
22             })
23           }
24         }
25       }
26 
27       // 获取ip地址
28       getlocalIP(function (ip) {
29         if(ip){
30           alert('ip===' + ip)
31         }
32       })

三,横向转纵向排序算法

数组动态渲染默认是横向渲染,如果想使用纵向渲染,则改变渲染数组的顺序,则可实现界面纵向渲染的效果。

第一步:根据渲染的列数,需将一维数组转换为二维数组

 1 //将一维数组 转多维数组
 2             let len = baseArray.length;
 3             let n = Math.ceil(len / columnNumber); //每行显示的个数
 4             let lineNum = len % n === 0 ? len / n : Math.floor((len / n) + 1);
 5             let tempArray = [];
 6             for (let i = 0; i < lineNum; i++) {
 7                 // slice() 方法返回一个从开始到结束(不包括结束)选择的数组的一部分浅拷贝到一个新数组对象。且原始数组不会被修改。
 8                 let temp = baseArray.slice(i * n, i * n + n);
 9                 tempArray.push(JSON.parse(JSON.stringify(temp)));
10             }

第二步:实现二维数组横纵列转换

1 //实现二维数组横纵列转换
2             let newArray = tempArray[0].map(function (col, index) {
3                 return tempArray.map(function (row) {
4                     return row[index];
5                 })
6             });

第三步:将多维数组转一维数组并去空

1 newArray = [].concat.apply([], newArray);//将多维数组 转一维数组
2             let convertedArray = [];
3             //遍历去掉空的数据
4             newArray.map(function (item) {
5                 if (item) {//保留对象数据
6                     convertedArray.push(item)
7                 }
8             });

第四步:完成代码如下

 1 function horizontalToVerticalSort(baseArray,columnNumber=3) {
 2             //将一维数组 转多维数组
 3             let len = baseArray.length;
 4             let n = Math.ceil(len / columnNumber); //每行显示的个数
 5             let lineNum = len % n === 0 ? len / n : Math.floor((len / n) + 1);
 6             let tempArray = [];
 7             for (let i = 0; i < lineNum; i++) {
 8                 // slice() 方法返回一个从开始到结束(不包括结束)选择的数组的一部分浅拷贝到一个新数组对象。且原始数组不会被修改。
 9                 let temp = baseArray.slice(i * n, i * n + n);
10                 tempArray.push(JSON.parse(JSON.stringify(temp)));
11             }
12             //实现二维数组横纵列转换
13             let newArray = tempArray[0].map(function (col, index) {
14                 return tempArray.map(function (row) {
15                     return row[index];
16                 })
17             });
18             newArray = [].concat.apply([], newArray);//将多维数组 转一维数组
19             let convertedArray = [];
20             //遍历去掉空的数据
21             newArray.map(function (item) {
22                 if (item) {//保留对象数据
23                     convertedArray.push(item)
24                 }
25             });
26             return convertedArray;
27         }

 

posted @ 2019-10-17 10:43  jackson影琪  阅读(522)  评论(0编辑  收藏  举报