零艺江湖 - 行到水穷处,坐看云起时 | 个人生活记录 | 零艺客 - JavaScript
序[scode type="share"]没什么好说的，蹭个热度，燃鹅解密，直接上代码。[/scode]PHP版<?php /* * @Author: ZeroArt * @Date: 2021-02-25 21:41:02 * @Link: http://lykep.com * @LastEditors: ZeroArt * @LastEditTime: 2021-02-25 21:41:30 * @Description: */ class rane { // utf8编码 function decodeUtf8($bytes) { $encoded = ""; for ($i = 0; $i < count($bytes); $i++) { $encoded .= '%' . dechex($bytes[$i]); } return urldecode($encoded); } // 数组转字符串 function dec($t) { if (is_string($t)) { return $t; } else { $n = []; for ($i = 0; $i < count($t); $i++) { $n[] = $t[$i]; } } return $this->decodeUtf8($n); } // hex字符串转数组 public function n($t) { $e = 0; $n = strlen($t); if ($n % 2 != 0) { return null; } else { $n /= 2; $o = []; for ($i = 0; $i < $n; $i++) { $r = substr($t, $e, 2); $a = hexdec($r); $o[] = $a; $e += 2; } $os = []; foreach ($o as $key => $value) { $os[] = $value; } return $os; } } // 加解密核心算法 function m($t, $e) { $a = []; $n = ""; $o = count($e); $i = ($t ^ $o) % 255; $r = (($o & $i) + ($t ^ $i)) % 255; $a = []; $s = 0; for ($s = 0; $s < $o; $s++) { $i -= ($r * $o ^ $t) % 255; $t -= $r; $n = 255 & (($n = $e[$s]) ^ ($r = $i % 255)); $a[] = $n; } return $a; } } $rane = new rane(); // 常规模式 if (isset($_GET['t']) && isset($_GET['v'])) { echo ($rane->dec($rane->m($_GET['t'], $rane->n($_GET['v'])))); exit(); } // JOSN格式 if (isset($_GET['json']) || isset($_POST['json'])) { $param = json_decode($_REQUEST['json'], true); echo ($rane->dec($rane->m($param['t'], $rane->n($param['v'])))); exit(); } // 案例 if (isset($_GET['dome'])) { echo ($rane->dec($rane->m('59131814', $rane->n('ad88eff390bd7706d24a93f04727c0d61f886f3f4922680c5cb7f8716073379a625845875d6708477d3014f31e575098b983ce709bd1f7f3f7fa63f6e12eb216ade7a43e314048cc80d73c18d6a8d72cb1f231593b4aa9ef56a170fbf9db23d07048589053d56fa4bafdbbe8b52720d938f6b4f85a2dd0092805fc2c6aa4c8fd3b92a89c7786368eb0e979d96c03831412d23d008a491b68295d893c77251902dba8ee84fe390efbee01d65815254bd9bbe1bd7e12b1fc0542bfc893d0ac83c3b7abafbc6328aa37f89a378fce83e01d49d19ef4ed20893993870501fdef066e092a27fc45a7ce8c0d54fa0244f6b7a2388be2a7fba0aa80cbe313194886d0ace13ab730f0288e987fa31088d4f559d74a14a8f057254e070b8b')))); exit; } // 提示 $msg = [ [ "JSON请求" => "?json={'t'=>'59131814','v'=>'xxxxxx'}" ], [ "常规请求" => "?t=59131814&v=xxxxxx" ] ]; echo " "; var_dump($msg); echo " "; Js版（可加密）// utf8编码 function decodeUtf8(bytes) { var encoded = ""; for (var i = 0; i < bytes.length; i++) { encoded += '%' + bytes[i].toString(16); } return decodeURIComponent(encoded); } // 数组转字符串 function dec(t) { if ("string" == typeof t) return t; for (var n = [], i = 0; i < t.length; i++) { n.push(t[i]); } return decodeUtf8(n); } // hex字符串转数组 function n(t) { var e = 0, n = t.length; if (n % 2 != 0) return null; n /= 2; for (var o = [], i = 0; i < n; i++) { var r = t.substr(e, 2), a = parseInt(r, 16); o.push(a), e += 2; } return o; } // 加解密核心算法 function m(t, e) { for (var n, o = e.length, i = (t ^ o) % 255, r = ((o & i) + (t ^ i)) % 255, a = [], s = 0; s < o; s++) { i -= (r * o ^ t) % 255, t -= r, n = 255 & ((n = e[s]) ^ (r = i % 255)), a.push(n); } return a; } // 字符串转字节 function stringToByte(t) { var e, n, o = new Array(); e = t.length; for (var i = 0; i < e; i++) { (n = t.charCodeAt(i)) >= 65536 && n <= 1114111 ? (o.push(n >> 18 & 7 | 240), o.push(n >> 12 & 63 | 128), o.push(n >> 6 & 63 | 128), o.push(63 & n | 128)) : n >= 2048 && n <= 65535 ? (o.push(n >> 12 & 15 | 224), o.push(n >> 6 & 63 | 128), o.push(63 & n | 128)) : n >= 128 && n <= 2047 ? (o.push(n >> 6 & 31 | 192), o.push(63 & n | 128)) : o.push(255 & n); } return o; } // 数组转hex字符串 function parseByte2HexStr(t) { for (var e = "", n = 0; n < t.length; n++) { var o = t[n].toString(16); 1 == o.length && (o = "0" + o), e += o; } return e; } // 解密数据，a和b分别为t和v function decode(a, b) { return dec(m(a, n(b))) } // 加密数据，e和n分别为t和v function encode(e, n) { return parseByte2HexStr(m(e, stringToByte(n))) } // t值,v值 decode("59131814",'xxxxxx');
序写APi接口文档时为了方便浏览，需要个动态的菜单，简单的实现了下，代码记录。[...]
1、reload 方法，该方法强迫浏览器刷新当前页面。语法：location.reload([bForceGet]) 参数： bForceGet， 可选参数， 默认为 false，从客户端缓存里取当前页。true, 则以GET方式，从服务端取最新的页面,相当于客户端点击 F5("刷新")2、replace 方法该方法通过指定URL替换当前缓存在历史里（客户端）的项目，因此当使用replace方法之后，你不能通过“前进”和“后退”来访问已经被替换的URL。语法： location.replace(URL) 在实际应用的时候，重新刷新页面的时候，我们通常使用： location.reload() 或者是 history.go(0) 来做。因为这种做法就像是客户端点F5刷新页面，所以页面的method="post"的时候，会出现"网页过期"的提示。那是因为Session的安全保护机制。可以想到： 当调用 location.reload() 方法的时候， aspx页面此时在服务端内存里已经存在， 因此必定是 IsPostback 的。如果有这种应用： 我们需要重新加载该页面，也就是说我们期望页面能够在服务端重新被创建， 我们期望是 Not IsPostback 的。这里，location.replace() 就可以完成此任务。被replace的页面每次都在服务端重新生成。 你可以这么写： location.replace(location.href);返回并刷新页面： location.replace(document.referrer); document.referrer //前一个页面的URL 不要用 history.go(-1)，或 history.back();来返回并刷新页面，这两种方法不会刷新页面。3、Javascript刷新页面的几种方法：1、history.go(0)2、location.reload()3、location=location4、location.assign(location)5、document.execCommand('Refresh')6、window.navigate(location)7、location.replace(location)8、document.URL=location.href4、自动刷新页面的方法:1、页面自动刷新：把如下代码加入区域中2、页面自动跳转：把如下代码加入区域中
封装函数// 阻止默认跳转 function stopDefault(e) { if (e&&e.preventDefault){ e.preventDefault(); }else{ window.event.returnValue = false; return false; } } 函数调用//方法一 $(document).ready(function(){ $(document).on('click','a',function(e){ stopDefault(e); }); }); //mui-app方法 mui('#newsContent').on('tap', 'a', function(e) { stopDefault(e); });
[scode type="green"]jQuery获取当前点击的元素[/scode]/*jQuery获取当前点击的元素*/ $('input').click(function(e){ e.val(1);}); /**/[button color="success" icon="" url="https://www.sogou.com/link?url=DSOYnZeCC_poMW3eALYnVjTkIO_Fjowymdz37fgH7Jz6r0lA8_cVGJgnn2m3UKeGZQejMp6UPj2vmRdDYWyao2mlYie_BxOLfyWOyBgnVOPshHJCEAlQW1aq9CP3qIfDmHrgg8_PIU0." type=""]原文地址[/button][scode type="green"]jQuery input点击事件[/scode]/*jQuery input点击事件*/ $("input").each(function(i,_i){ if($(_i).is(':checked')){ alert("选中");/*选中后执行*/ }else{ alert("未选中"); } }); [scode type="green"]jQuery当前节点事件[/scode]/判断选择框选择情况 编写选择框异步提交时遇到的问题/$('input').click(function(){ /*$(this) 当前节点内容*/ $(this).each(function(i,_i){ if($(_i).is(':checked')){ $(this).val('ON');/*当选中 设置值ON*/ }else{ $(this).val('OFF');/*选中取消 设置值OFF*/ } }); });
你好啊！ <！--onClick="CopyAdd()" 点哪里加哪里--> 复制
var $_GET = (function(){ var url = window.document.location.href.toString(); var u = url.split("?"); if(typeof(u[1]) == "string"){ u = u[1].split("&"); var get = {}; for(var i in u){ var j = u[i].split("="); get[j[0]] = j[1]; } return get; } else { return {}; } })(); 使用方式 $_GET['get参数'], 即可直接获得GET参数的值function getPar(par){ //获取当前URL var local_url = document.location.href; //获取要取得的get参数位置 var get = local_url.indexOf(par +"="); if(get == -1){ return false; } //截取字符串 var get_par = local_url.slice(par.length + get + 1); //判断截取后的字符串是否还有其他get参数 var nextPar = get_par.indexOf("&"); if(nextPar != -1){ get_par = get_par.slice(0, nextPar); } return get_par; }
function show_date_time(t){ window.setTimeout("show_date_time()", 1000); BirthDay=new Date(t); today=new Date(); timeold=(today.getTime()-BirthDay.getTime()); sectimeold=timeold/1000; secondsold=Math.floor(sectimeold); msPerDay=24*60*60*1000; e_daysold=timeold/msPerDay; daysold=Math.floor(e_daysold); e_hrsold=(e_daysold-daysold)*24; return daysold; }
JS禁止查看网页源代码的简单实现方法