JS小整理
禁止右键和复制
$(document).ready(
function() {
document.body.oncontextmenu = document.body.ondragstart = document.body.onselectstart = document.body.onbeforecopy = function() {
return false;
};
document.body.onselect = document.body.oncopy =document.body.onmouseup = function() {
document.selection.empty();
};
});
JSON的字符串解析成JSON数据格式
//1、 eval() -- 计算javascript字符串
var dataObj=eval("("+data+")");//转换为json对象
alert(eval("{}"); // return undefined
alert(eval("({})");// return object[Object] //2、使用Function对象来进行返回解析,典型应用就是在JQUERY中的AJAX方法下的success等对于返回数据data的解析
var json='{"name":"CJ","age":18}';
data =(new Function("","return "+json))();
js页面跳转
1、window.open()
function goOutSystem(outSystemSign){
window.open('http://jxjy.cdeledu.com/cdel_jxjy/'+outSystemSign+'.shtml');
}
2、window.location.href
<script language="JavaScript" type="text/javascript">
window.location.href="target.aspx";
</script>
3、window.navigate
<script language="javascript">
window.navigate("target.aspx");
</script>
4、window.loction.replace(注意跟第一种方式的区别)
<script language="javascript">
window.location.replace("target.aspx");
</script>
进系统默认的是1.aspx,进入2.aspx时,用window.location.replace("3.aspx");与window.location.href ("3.aspx");用户界面效果无区别,但当3.aspx调用window.history.Go(-1); window.history.back();时,使用前者的话返回方法不好用,会返回到1.aspx。
5、self.location,和下面的top.location有小小区别
<script language="JavaScript">
self.location='target.aspx';
</script>
6、top.location
<script language="javascript">
top.location='target.aspx';
</script>
7、$(window).attr('location',_ctx+"/app/interface/appLoad");
8、不推荐这种方式跳转
<script language="javascript">
alert("返回");
window.history.back(-1);
</script>
9、meta方式实现跳转(content = 3 单位是秒)
<meta http-equiv=refresh content=20;URL="http://www.wyxg.com">
//2隔20秒后跳转到http://www.wyxg.com页面
区分null、0、undefined、false
typeof(undefined) == 'undefined'
typeof(null) == 'object'
typeof("") == 'string'
typeof(0) == 'number'
typeof(false) == 'boolean'
这五个值的共同点是,在if语句中做判断,都会执行false分支。当然从广义上来看,是说明这些数值都是其对应数据类型上的无效值或空值。还有这五个值作!运算,结果全为:true。
它们到String的转换关系是:
- String(undefined) -> "undefined"
- String(null) -> "null"
- String("") -> ""
- String(0) -> "0"
- String(false) -> "false"
for (var i = 0; i < data.rows.length; i++) {
var status = -1; //-1无意义,只是不影响状态的判断
if(typeof(data.rows[i].invoiceStatus) == 'number'){
status = data.rows[i].invoiceStatus;
if (status == 0 || status == 1 || status == 3 || status == 6 || status == 7 ||status == 8 || status == 9 ||
status == 12||status == 13 || status == 14) {
$("input[type='checkbox']")[i + 1].disabled = true;
}
}
}
获取当前日期时间“yyyy-MM-dd HH:MM:SS”
//法一
function getNowFormatDate() {
var date = new Date();
var seperator1 = "-";
var seperator2 = ":";
var month = date.getMonth() + 1;
var strDate = date.getDate();
if(month >= 1 && month <= 9) {
month = "0" + month;
}
if(strDate >= 0 && strDate <= 9) {
strDate = "0" + strDate;
}
var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate + " " +
date.getHours() + seperator2 + date.getMinutes() +seperator2 + date.getSeconds();
document.getElementById("info1").innerHTML = currentdate;
return currentdate;
}
//法二
function time() {
var now = new Date();
var year = now.getFullYear();
var month = now.getMonth();
var date = now.getDate();
var hour = now.getHours();
var minite = now.getMinutes();
var second = now.getSeconds();
var seperator1 = "-";
var seperator2 = ":";
document.getElementById("info1").innerHTML = year + seperator1 + (month + 1) + seperator1 + date + " " + hour +
seperator2 + minite + seperator2 + second;
}
复制到剪切板(app)
function codeCopy() {
if (navigator.userAgent.match(/(iPhone|iPod|iPad);?/i)) {//区分iPhone设备
window.getSelection().removeAllRanges();//这段代码必须放在前面否则无效
var Url2=document.getElementById("groomCode");//要复制文字的节点
var range = document.createRange();
range.selectNode(Url2);// 选中需要复制的节点
window.getSelection().addRange(range);// 执行选中元素
var successful = document.execCommand('copy');// 执行 copy 操作
window.getSelection().removeAllRanges();// 移除选中的元素
popTxt('复制成功');
}else{
var code=document.getElementById("groomCode").innerText;
var input = document.createElement("input");
input.value = code;
document.body.appendChild(input);
input.select();
input.setSelectionRange(0, input.value.length), document.execCommand('Copy');
document.body.removeChild(input);
popTxt('复制成功');
}
}
复制到剪切板(pc)
function copy(v) {
var code = $("#andIOSEntSignAddress").val();//要复制文字
var input = document.createElement("input");
input.value = code;
document.body.appendChild(input);
input.select();
input.setSelectionRange(0, input.value.length), document.execCommand('Copy');
document.body.removeChild(input);
layer.msg("复制成功", {icon : 1});
}
判断是否是移动设备打开,判断ios系统还是android系统
var browser = {
versions: function () {
var u = navigator.userAgent, app = navigator.appVersion;
return { //移动终端浏览器版本信息
trident: u.indexOf('Trident') > -1, //IE内核
presto: u.indexOf('Presto') > -1, //opera内核
webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核
gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核
mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端
ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或uc浏览器
iPhone: u.indexOf('iPhone') > -1, //是否为iPhone或者QQHD浏览器
iPad: u.indexOf('iPad') > -1, //是否iPad
webApp: u.indexOf('Safari') == -1 //是否web应该程序,没有头部与底部
};
}(),
language: (navigator.browserLanguage || navigator.language).toLowerCase()
} if (browser.versions.mobile) {//判断是否是移动设备打开
var ua = window.navigator.userAgent.toLowerCase();
if (ua.match(/MicroMessenger/i) == "micromessenger") {//在微信中打开
if(ua.indexOf("android")!=-1){
//安卓系统
}else {
//ios系统
}
}
if (ua.match(/WeiBo/i) == "weibo") {
//在新浪微博客户端打开
}
if (browser.versions.ios) {
//是否在IOS浏览器打开
}
if(browser.versions.android){
//是否在安卓浏览器打开
}
} else {
//否则就是PC浏览器打开
}
微信内置浏览器浏览H5页面弹出的键盘遮盖文本框的解决办法
window.addEventListener("resize", function () {
var widthBody = document.body.clientWidth
var heightBody = widthBody*1.77
if (document.activeElement.tagName == "INPUT" || document.activeElement.tagName == "TEXTAREA") {
window.setTimeout(function () {
$('body').css("height",heightBody)
document.activeElement.scrollIntoViewIfNeeded();
}, 0);
}else{
$('body').css("height","100%")
}
});
刷新页面
- history.go(0)
- location.reload()
- location=location
- location.assign(location)
- document.execCommand('Refresh')
- window.navigate(location)
- location.replace(location)
- document.URL=location.href
//定时刷新
$(document ).ready(function(){
searchData();
setTimeout('myRefresh()', 2000);//2秒刷新一次
});
function myRefresh() {
//window.location.reload();
searchData();
$.getJSON("<c:url value='/signup/isSignupComplete.do'/>",{ ranNum : Math.random()},
function(result){
if(result.totalNum == 0){
setTimeout('myRefresh()', 2000);//2秒刷新一次
} else if(result.totalNum == 1){
window.location.href="http://www.baidu.com";
}
});
} //自动刷新
1.把如下代码加入<head>区域中
<meta http-equiv="refresh" content="20"> //每隔20秒刷新一次页面.
2.页面自动刷新js版
<mce:script language="JavaScript">
function myrefresh(){
window.location.reload();
}
setTimeout('myrefresh()',1000); //指定1秒刷新一次
</mce:script>
获取data-*属性值
//需要获取的就是data-id 和 dtat-vice-id的值
<li id="getId" data-id="122" data-vice-id="11">获取id</li>
一:getAttribute()方法
const getId = document.getElementById('getId');
//getAttribute()取值属性
console.log(getId.getAttribute("data-id"));//122
console.log(getId.getAttribute("data-vice-id"));//11
//setAttribute()赋值属性
getId.setAttribute("data-id","48");
console.log(getId.getAttribute("data-id"));//48
二:dataset()方法
//data-前缀属性可以在JS中通过dataset取值,更加方便
console.log(getId.dataset.id);//112
//data-vice-id连接取值使用驼峰命名法取值
console.log(getId.dataset.viceId);//11 //赋值
getId.dataset.id = "113";//113
getId.dataset.viceId--;//10 //新增data属性
getId.dataset.id2 = "100";//100 //删除,设置成null,或者delete
getId.dataset.id2 = null;//null
delete getId.dataset.id2;//undefind
三:jquery data()方法
var id = $("#getId").data("id"); //122
var viceId = $("#getId").data("vice-id"); //11
//赋值
$("#getId").data("id","100");//100
四:jquery attr()方法
var id = $("#getId").attr("data-id"); //122
var viceId = $("#getId").attr("data-vice-id"); //11
//赋值
$("#getId").attr("data-id","100");//100
JS小整理的更多相关文章
- js小功能整理
/** * 判断是否包含字符串某字符串 * @param {[type]} str [被检测的字符串] * @param {[type]} substr [检测是否含有的字符串] * @return ...
- 第24篇 js小知识和“坑”
前面说了说了js的相关知识,基本上除了语法外,把项目常用的知识做了一个梳理,现在说下js的其它方面的知识,这些知识不成体系,属于不理解对于一般开发没什么太多影响,但如果理解清楚,可以更好去开发. js ...
- React.js 小书介绍
React.js 小书 Github 关于作者 这是一本关于 React.js 的小书. 因为工作中一直在使用 React.js,也一直以来想总结一下自己关于 React.js 的一些知识.经验.于是 ...
- [转载]Js小技巧||给input type=“password”的输入框赋默认值
http://www.cnblogs.com/Raywang80s/archive/2012/12/06/2804459.html [转载]Js小技巧||给input type="passw ...
- 常用js方法整理common.js
项目中常用js方法整理成了common.js var h = {}; h.get = function (url, data, ok, error) { $.ajax({ url: url, data ...
- 一些js小题(一)
一些js小题,掌握这些对于一些常见的面试.笔试题应该很有帮助: var a=10; function aa(){ alert(a); } function bb(){ aa(); } bb();//1 ...
- 项目中常用js方法整理common.js
抽空把项目中常用js方法整理成了common.js,都是网上搜集而来的,大家一起分享吧. var h = {}; h.get = function (url, data, ok, error) { $ ...
- 一个js小游戏----总结
花了大概一天左右的功夫实现了一个js小游戏的基本功能,类似于“雷电”那样的小游戏,实现了随即怪物发生器,碰撞检测,运动等等都实现了,下一个功能是子弹轨迹,还有其他一些扩展功能,没有用库,也没有用web ...
- React.js小书总结
(迁移自旧博客2017 08 27) 第一阶段 react的组件相当于MVC里面的View. react.js 将帮助我们将界面分成了各个独立的小块,每一个块就是组件,这些组件之间可以组合.嵌套,就成 ...
随机推荐
- MongoDb学习(四)--Repository
在学习这个的时候.关于Repository的映射.在备注xml的时候出现了错误. 错误有点坑.以后写的时候注意一点,在学习的时候.用的mongo的jar包版本比较低. 然而本机操作的时候,用的是最新版 ...
- JAVA的一些笔记
/*一般函数与构造函数的区别 构造函数:对象创建时,就会调用与之对应的构造函数,对对象进行初始化 一般函数:对象创建时,需要函数功能时才调用 构造函数:一个对象对象创建时,只调用一次 一般函数:对象创 ...
- ip,子网掩码,网关以及dns简述
ip 描述 ip地址用于标识不同的计算机身份,ip地址=网络地址+主机地址 例子 192.168.1.168(ip地址)=192.168.1.0(网络地址)+0.0.0.168(主机地址) 寻址过程 ...
- 用Margin还是用Padding的区别
用margin还是用padding这个问题是每个学习CSS进阶时的必经之路. CSS边距属性定义元素周围的空间.通过使用单独的属性,可以对上.右.下.左的外边距进行设置.也可以使用简写的外边距属性同时 ...
- Redis--部署操作
1.Redis 1.1 安装 当前ubuntu虚拟机中已经安装好了redis,以下步骤可以跳过 以后自己安装过程如下:redis下载链接:x 指的是版本号 http://download.redis. ...
- API接口的安全设计验证—ticket,签名,时间戳
概述 与前端对接的API接口,如果被第三方抓包并进行恶意篡改参数,可能会导致数据泄露,甚至会被篡改数据,我主要围绕时间戳,token,签名三个部分来保证API接口的安全性 1.用户成功登陆站点后,服务 ...
- 翻译 | 30个 Python3 的最佳实践,技巧和窍门
1.使用 Python3 如果你关注 Python 的话,应该会知道 Python 2 已经于今年(2020 年)1 月 1 日正式弃用了.这份教程的很多例子都是只支持 Python 3 的,如果你还 ...
- DB2在渗透中的应用(转载)
原文地址:http://drops.wooyun.org/tips/16673 0x00 DB2简介 DB2是IBM公司推出关系型数据库管理系统. 现今DB2主要包含以下三个系列: DB2 for L ...
- 【原创】中断子系统-ARM GPIO中断处理流程
目录 第一部分 GIC中断控制器的注册 1. GIC驱动分析 2.GIC驱动流程分析 第二部分 device node转化为platform_device 第三部分:platform_device注册 ...
- 4.k8s存储之Volume、PV、PVC和StatefulSet
3.Volume 容器磁盘上的文件的生命周期是短暂的,这就使得在容器中运行重要应用时会出现一些问题.首先,当容器崩溃时,kubelet 会重启它,但是容器中的文件将丢失--容器以干净的状态(镜像最初的 ...