前端工作中的一些解决问题的方法,可以参考一下,web开发框架

//禁用鼠标事件

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中粘贴内容时过滤掉粘贴内容的一些特殊的样式或者标签

无标题文档
2222

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对象互转

www.jb51.net/article/350…

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、避免浏览器自动填充表单的解决方式

www.cnblogs.com/moonLightcy…

1、添加input隐藏框来填充

    • 2、修改选择器

      小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

      深知大多数初中级前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
      因此收集整理了一份《2024年Web前端开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

      img
      img
      img
      img

      由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

      如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:前端)
      img

      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、避免浏览器自动填充表单的解决方式

      www.cnblogs.com/moonLightcy…

      1、添加input隐藏框来填充

      • 2、修改选择器

        小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

        深知大多数初中级前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
        因此收集整理了一份《2024年Web前端开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

        [外链图片转存中…(img-YImGx0JH-1710918631758)]
        [外链图片转存中…(img-mOHBCifB-1710918631759)]
        [外链图片转存中…(img-ZNzMYMlG-1710918631759)]
        [外链图片转存中…(img-zoUJ0KEq-1710918631760)]

        由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

        如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:前端)
        [外链图片转存中…(img-TSjTAEN6-1710918631760)]

      评论
      添加红包

      请填写红包祝福语或标题

      红包个数最小为10个

      红包金额最低5元

      当前余额3.43前往充值 >
      需支付:10.00
      成就一亿技术人!
      领取后你会自动成为博主和红包主的粉丝 规则
      hope_wisdom
      发出的红包
      实付
      使用余额支付
      点击重新获取
      扫码支付
      钱包余额 0

      抵扣说明:

      1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
      2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

      余额充值