//禁用鼠标事件
document.onmousedown = function(e){
if ( e.which == 2 ){// 鼠标滚轮的按下,滚动不触发
return false;
}
if( e.which==3 ){// 鼠标右键
return false;
}
}
//禁用键盘中的ctrl、alt、shift
document.onkeydown = function(){
if( event.ctrlKey ){
return false;
}
if ( event.altKey ){
return false;
}
if ( event.shiftKey ){
return false;
}
}
οncοntextmenu=‘return false’
οndragstart=‘return false’
onselectstart =‘return false’
οnselect=‘document.selection.empty()’
οncοpy=‘document.selection.empty()’
onbeforecopy=‘return false’
οnmοuseup=‘document.selection.empty()’
一个更简单的方法就是在中加入如下的代码,这样鼠标的左右键都失效了.
topmargin=“0”
οncοntextmenu=“return false”
οndragstart=“return false”
onselectstart=“return false”
οnselect=“document.selection.empty()”
οncοpy=“document.selection.empty()”
onbeforecopy=“return false”
οnmοuseup=“document.selection.empty()”
//1.禁止网页另存为:在后面加入以下代码:
//2.禁止网页内容复制.粘贴:在中加入以下代码:
οnmοusemοve=/HideMenu()/ οncοntextmenu=“return false”
οndragstart=“return false” onselectstart =“return false”
οnselect=“document.selection.empty()”
οncοpy=“document.selection.empty()” onbeforecopy=“return false”
οnmοuseup=“document.selection.empty()”>
14、一个可编辑div中粘贴内容时过滤掉粘贴内容的一些特殊的样式或者标签
15、图片上传/预览
function updateImage(obj,showid){
var idFile = $(obj).attr(“id”);
var docObj = document.getElementById(idFile);
var fileName = docObj.value; //获取的文件
if (!fileName.match(/.jpg|.gif|.png|.jpeg/i)) {
layerOpen(‘提示’,‘您上传的图片格式不正确,请重新选择!’);
return false;
}
var imgSrc=‘’;
if (docObj.files && docObj.files[0]) {
//火狐下,直接设img属性
/*imgSrc = docObj.files[0].getAsDataURL(); */
if (window.navigator.userAgent.indexOf(“Chrome”) >= 1 || window.navigator.userAgent.indexOf(“Safari”) >= 1) {
imgSrc = window.webkitURL.createObjectURL(docObj.files[0]);
}
else {
imgSrc = window.URL.createObjectURL(docObj.files[0]);
}
} else {
imgSrc= fileName;
}
if(navigator.userAgent.indexOf(“MSIE 9.0”)>0){//判断ie浏览器版本
var pic = document.getElementById(showid),
file = document.getElementById(idFile);
file.select();
file.blur();
var reallocalpath = document.selection.createRange().text;
pic.style.filter = “progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=‘scale’,src=”" + reallocalpath + “”)";//增加滤镜
//这里设置预览图片pic的大小
// 设置img的src为base64编码的透明图片 取消显示浏览器默认图片
pic.src = ‘data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==’;
}
/var imgUrl = window.URL.createObjectURL(fileList[0]);/
$(obj).next().attr(“src”,imgSrc);
}
function addAppIndex(){
if (!standard_checkInputInfo(“addAppForm”)) {
return;
}
if(‘’==$(‘#addAppImg’).val()){
layerOpen(‘提示’,‘请上传图片’);
return;
}
$(‘#addAppForm’).form(‘submit’, {
url : function() {
return webPath + ‘/wechat/homeconfiguration/addHomeconfiguration.htm’;
},
success : function(data) {
var dataObj = eval(“(” + data + “)”);
if (dataObj.status == 1) {
$(‘#addAppForm’)[0].reset();
loadParentAPP(pageNo,quesSize);
$(‘.add-app’).fadeOut();
layerOpen(‘提示’,dataObj.msg);
}else{
layerOpen(‘提示’,dataObj.msg);
}
}
});
}
16、某些CSS样式
overflow: hidden; /*自动隐藏文字/
text-overflow: ellipsis; /*文字隐藏后添加省略号/
white-space: nowrap; /*强制不换行/
word-wrap: normal(默认) | break-word/打断,强制换行/
word-break: normal(默认) | break-all | keep-all /Firefox、Opera不能识别/
/不让鼠标选中文字/
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
17、用JS判断操作系统,只能手机登录,而电脑不能登录Web
/**
*用JS判断操作系统 如果不是手机客户端直接跳转到一个显示页面 提示
*/
18、微信JS支付代码_前端调用微信支付接口
//1.跟大家分享一段微信支付的js代码片段、V3版的微信支付没有paySignKey参数、基本上是直接复制就可以使用了、改一改自己的参数就好了、话不多说、直接上代码
$(´.Save_Patient_Msg´).click(function(){
$(´.Save_Patient_Msg´).off(´click´);
var hrdfId = getOrderId();
var txnAmt = $(´.sum_pay.font-red´).html();
var data = {orderId: hrdfId, txnAmt: “0.01”,
prodDesc: “远程诊断服务”, callType: “JSAPI”,
access_token: getUrlParam(“access_token”)
};
$.ajax({
type: ´POST´,
url: ´/hims/api/commonPay/queryTransNo?access_token=´ getUrlParam(´access_token´),
dataType:´json´,
contentType:´application/json´,
data: JSON.stringify(data),
success: function(Wxres){
if(!Wxres){
$.alert(´服务器拥堵,请稍后访问´)
}else{
console.log(Wxres);
if(Wxres.data.respCode == ´fail´){
$.alert(Wxres.data.respMsg);
}else{
//10 微信支付接口
// 10.1 发起一个支付请求
// 注意:此 Demo 使用 2.7 版本支付接口实现,建议使用此接口时参考微信支付相关最新文档。
var param = Wxres.data;
wx.config({
debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: ´wx403ead26691402fb´, // 必填,公众号的唯一标识
timestamp: param.timestamp, // 必填,生成签名的时间戳
nonceStr: param.noncestr, // 必填,生成签名的随机串
signature: param.signJs,// 必填,调用js签名,
jsApiList: [´chooseWXPay´] // 必填,需要使用的JS接口列表,这里只写支付的
});
wx.chooseWXPay({
timestamp: param.timestamp, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
nonceStr: param.noncestr, // 支付签名随机串,不长于 32 位
package: “prepay_id=” param.transNo, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=***)
signType: “MD5”, // 签名方式,默认为´SHA1´,使用新版支付需传入´MD5´
paySign: param.sign, // 支付签名
success: function (res) {
if(res.errMsg == “chooseWXPay:ok”){
//alert(“支付成功”);
window.location.href = “/hims/weixin/pages/Order_ok.html?access_token=” getUrlParam(“access_token”);
}else{
alert(res.errMsg);
}
},
cancel: function(res){
//alert(´取消支付´);
}
});
}
}
},
error:function(data){
var msg = data.message || data.status;
$.alert(´服务器错误´ msg);
}
});
return false;
});
function getUrlParam(name){
//构造一个含有目标参数的正则表达式对象
var reg = new RegExp(“(^|&)” name “=([^&]*)(&|$)”);
//匹配目标参数
var r = window.location.search.substr(1).match(reg);
//返回参数值
if (r!=null) return unescape(r[2]); return null;
}
链接:
http://dditblog.com/itshare_553.html
http://www.cnblogs.com/kewenxin/p/7463337.html
//2.微信支付主要就是三步:1.组装数据生成预支付ID,2.调起微信支付接口,3.结果处理
$(“#getBrandWCPayRequest”).click(function() {
$.ajax({
type: “POST”,
url: “”,
data: {
“openId”: $(“#openId”).val(),
“total_fee”: $(“#total_price”).html(),
“body”: $(“#bodydes”).html(),
“productid”: $(“#productid”).val()
},
//参数自己根据业务定义
dataType: “json”,
success: function(data) {
callPay(data);
}
});
});
function callPay(data) {
//alert(“回调执行”);
var appId = data.appId;
var timeStamp = data.timeStamp;
var nonceStr = data.nonceStr;
var package = data.package;
var signType = data.signType;
var paySign = data.paySign;
//
WeixinJSBridge.invoke(‘getBrandWCPayRequest’, {
“appId”: appId,
“timeStamp”: timeStamp,
“nonceStr”: nonceStr,
“package”: package,
“signType”: signType,
“paySign”: paySign
},
function(res) {
//alert(res.err_msg);
WeixinJSBridge.log(res.err_msg);
if (res.err_msg == “get_brand_wcpay_request:ok”) {
//var pc = data.total_fee;
//var body = data.body;
//var openId = data.openId;
//var timeStamp = data.timeStamp;
//alert(“交易金额:”+pc+“分钱”+“产品名称:”+body+“用户openID:”+openId+“订单号:2015”+timeStamp);
//alert(“支付成功!”);
WeixinJSBridge.call(‘closeWindow’);
} else if (res.err_msg == “get_brand_wcpay_request:cancel”) {
//alert(“用户取消支付!”);
//WeixinJSBridge.call(‘closeWindow’);
} else {
alert(“支付失败!”);
WeixinJSBridge.call(‘closeWindow’);
}
});
}
blog.csdn.net/yulei_qq/ar… 银联支付 blog.csdn.net/Angular_/ar… mui微信/支付宝支付js
19、复制粘贴时自动添加出处
JavaScript在复制粘贴网页内容时自动添加出处:
www.open-open.com/code/view/1420709972656
outofmemory.cn/code-snippet/633/javascript-fuzhiniantie-wangyeneirong-shi-zidong-augment-chuchu
20、json字符串和json对象互转
JSON.parse(jsonstr); //可以将json字符串转换成json对象
JSON.stringify(jsonobj); //可以将json对象转换成json对符串
21、Truthy
在JavaScript中,Truthy(真值)指的是在Boolean上下文中转换后的值为真的值。所有值都是真值,除非它们被定义为 falsy (即, 除了false,0,“”,null,undefined和NaN 外)。 JavaScript 在Boolean上下文中使用强制类型转换(coercion)。
22、时间格式化
function show(date) {
var date = new Date(date);
/var info = date.getFullYear()+“年”;/
var info = date.getMonth() + 1 + “月”;
info += date.getDate() + “日”;
info += date.getHours() + “时”;
info += date.getMinutes() + “分”;
return info;
}
moment.js momentjs.cn/
23、30-seconds-of-code 代码片段
30-seconds-of-code
[github.com/Chalarangelo/30-seconds-of-code#anagrams-of-string-with-duplicates http://mp.weixin.…]( )
24、ajax的jquery同步/异步
Ajax请求默认的都是异步的 如果想同步 async设置为false就可以(默认是true) var html = $.ajax({ url: "some.php", async: false }).responseText;
或者在全局设置Ajax属性 $.ajaxSetup({ async: false });
再用post,get就是同步的了
25、如何判断当前浏览器是什么浏览器?
延伸扩展:如何判断当前浏览器是什么浏览器?
简而言之,每个浏览器的独有属性的一个罗列:
总所周知:当下比较常用的有Firefox(火狐浏览器)、Opera(欧鹏浏览器)、Safari(苹果公司的网络浏览器)、Chrome(谷歌浏览器);下面一一对各个浏览器相对独有的特性进行一个描述(暂时不谈论内核的差距,主要是从相关函数进行分析)。
Firefox中的DOM元素都有一个getBoxObjectFor函数,用来获取该DOM元素的位置和大小(IE对应的中是getBoundingClientRect函数)。这是Firefox独有的,判断它即可知道是当前浏览器是Firefox。
Opera提供了专门的浏览器标志,就是window.opera属性。
Safari浏览器中有一个其他浏览器没有的openDatabase函数,可做为判断Safari的标志。
Chrome有一个MessageEvent函数,但Firefox也有。不过,好在Chrome并没有Firefox的getBoxObjectFor函数,根据这个条件还是可以准确判断出Chrome浏览器的。
26、byte的1024转换方法
function bytesToSize(bytes) {
if (bytes === 0) return ‘0 B’;
var k = 1024, // or 1000
sizes = [‘B’, ‘KB’, ‘MB’, ‘GB’, ‘TB’, ‘PB’, ‘EB’, ‘ZB’, ‘YB’],
i = Math.floor(Math.log(bytes) / Math.log(k));
return (bytes / Math.pow(k, i)).toFixed(1) + ’ ’ + sizes[i];
}
27、JS获取URL中参数值(QueryString)的4种方法
方法一:正则法
function getQueryString(name) {
var reg = new RegExp(‘(^|&)’ + name + ‘=([^&]*)(&|$)’, ‘i’);
var r = window.location.search.substr(1).match(reg);
if (r != null) {
return unescape(r[2]);
}
return null;
}
// 这样调用:
alert(GetQueryString(“参数名1”));
alert(GetQueryString(“参数名2”));
alert(GetQueryString(“参数名3”));
方法二:split拆分法
function GetRequest() {
var url = location.search; //获取url中"?"符后的字串
var theRequest = new Object();
if (url.indexOf(“?”) != -1) {
var str = url.substr(1);
strs = str.split(“&”);
for (var i = 0; i < strs.length; i++) {
theRequest[strs[i].split(“=”)[0]] = unescape(strs[i].split(“=”)[1]);
}
}
return theRequest;
}
var Request = new Object();
Request = GetRequest();
// var 参数1,参数2,参数3,参数N;
// 参数1 = Request[‘参数1’];
// 参数2 = Request[‘参数2’];
// 参数3 = Request[‘参数3’];
// 参数N = Request[‘参数N’];
var q;
q = Request[‘q’];
q = Request.q;
方法三:又见正则
function GetQueryString(name) {
var reg = new RegExp(“(^|&)” + name + “=([^&]*)(&|$)”, “i”);
var r = window.location.search.substr(1).match(reg); //获取url中"?"符后的字符串并正则匹配
var context = “”;
if (r != null) context = r[2];
reg = null;
r = null;
return context == null || context == “” || context == “undefined” ? “”: context;
}
alert(GetQueryString(“q”));
方法四:单个参数的获取方法
function GetRequest() {
var url = location.search; //获取url中"?"符后的字串
if (url.indexOf(“?”) != -1) { //判断是否有参数
var str = url.substr(1); //从第一个字符开始 因为第0个是?号 获取所有除问号的所有符串
strs = str.split(“=”); //用等号进行分隔 (因为知道只有一个参数 所以直接用等号进分隔 如果有多个参数 //要用&号分隔 再用等号进行分隔)
alert(strs[1]); //直接弹出第一个参数 (如果有多个参数 还要进行循环的)
}
}
28、获得浏览器版本信息
function getBroswer(){
var sys = {};
var ua = navigator.userAgent.toLowerCase();
var s;
(s = ua.match(/edge/([\d.]+)/)) ? sys.edge = s[1] :
(s = ua.match(/rv:([\d.]+)) like gecko/)) ? sys.ie = s[1] :
(s = ua.match(/msie ([\d.]+)/)) ? sys.ie = s[1] :
(s = ua.match(/firefox/([\d.]+)/)) ? sys.firefox = s[1] :
(s = ua.match(/chrome/([\d.]+)/)) ? sys.chrome = s[1] :
(s = ua.match(/opera.([\d.]+)/)) ? sys.opera = s[1] :
(s = ua.match(/version/([\d.]+).*safari/)) ? sys.safari = s[1] : 0;
if (sys.edge) return { broswer : “Edge”, version : sys.edge };
if (sys.ie) return { broswer : “IE”, version : sys.ie };
if (sys.firefox) return { broswer : “Firefox”, version : sys.firefox };
if (sys.chrome) return { broswer : “Chrome”, version : sys.chrome };
if (sys.opera) return { broswer : “Opera”, version : sys.opera };
if (sys.safari) return { broswer : “Safari”, version : sys.safari };
return { broswer : “”, version : “0” };
}
getBroswer();
29、firefox hack
@-moz-document url-prefix(){.input2{top:2px;}}
30、json js对象 js字符串转换
jquery-json
var thing = {plugin: ‘jquery-json’, version: 2.3};//js对象
var encoded = $.toJSON( thing );
//转换为json,结果: ‘{“plugin”:“jquery-json”,“version”:2.3}’
var name = $.evalJSON( encoded ).plugin;
//js对象.属性,结果: “jquery-json”
var version = $.evalJSON(encoded).version;
//结果: 2.3
31、避免浏览器自动填充表单的解决方式
1、添加input隐藏框来填充
2、修改选择器
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:前端)
js字符串转换
jquery-json
var thing = {plugin: ‘jquery-json’, version: 2.3};//js对象
var encoded = $.toJSON( thing );
//转换为json,结果: ‘{“plugin”:“jquery-json”,“version”:2.3}’
var name = $.evalJSON( encoded ).plugin;
//js对象.属性,结果: “jquery-json”
var version = $.evalJSON(encoded).version;
//结果: 2.3
31、避免浏览器自动填充表单的解决方式
1、添加input隐藏框来填充
2、修改选择器
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。[外链图片转存中…(img-YImGx0JH-1710918631758)]
[外链图片转存中…(img-mOHBCifB-1710918631759)]
[外链图片转存中…(img-ZNzMYMlG-1710918631759)]
[外链图片转存中…(img-zoUJ0KEq-1710918631760)]由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:前端)
[外链图片转存中…(img-TSjTAEN6-1710918631760)]