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

4、鼠标滚轮事件,各浏览器的适配

/IE/Opera注册事件/

if(document.attachEvent){

document.attachEvent(‘onmousewheel’,scrollFunc);

}

/Firefox注册事件/

if(document.addEventListener){

document.addEventListener(‘DOMMouseScroll’,scrollFunc,false);

}

/Safari与Chrome属于同一类型,可使用HTML DOM方式添加事件/

window.onmousewheel=document.onmousewheel=scrollFunc;//IE/Opera/Chrome

/除Firefox外其余均可使用HTML DOM方式添加事件,因此添加事件使用以下方式/

/注册事件/

if(document.addEventListener){

document.addEventListener(‘DOMMouseScroll’,scrollFunc,false);

}//W3C

window.onmousewheel=document.onmousewheel=scrollFunc;//IE/Opera/Chrome

5、上传滚动条显示问题

$.messager.progress({interval:‘99999999’}); //缓冲进度条

var formData = new FormData();

var mutiUpload=document.getElementById(‘updateFile’).files;

for(var i=0;i<mutiUpload.length;i++){

formData.append(“filelist”, mutiUpload[i]);

}

formData.append(“zyname”, $(“#addResource [name=‘zyname’]”).val());

formData.append(“dagang”, $(“#addResource [name=‘dagang’]”).val());

formData.append(“rangetype”, $(“#addResource [name=‘rangetype’]”).val());

formData.append(“whether”, $(“#addResource [name=‘whether’]”).val());

$.ajax({

url: webPath + ‘/wechat/Resourcesmanage/addListResources.htm’,

type: “POST”,

data: formData,

processData: false, // 不要对data参数进行序列化处理,默认为true

contentType: false, // 不要设置Content-Type请求头,因为文件数据是以 multipart/form-data 来编码

xhr: function(){

myXhr = $.ajaxSettings.xhr();

if(myXhr.upload){

myXhr.upload.addEventListener(‘progress’,function(e) {

if (e.lengthComputable) {

var percent = Math.floor(e.loaded/e.total*100);

if(percent <= 100) {

$(“.progressbar-text”).text(percent+‘%’);

$(“.progressbar-value”).css(‘width’, percent+‘%’);

}

if(percent > 100) {

}

}

}, false);

}

return myXhr;//利用递归

},

success: function(obj){

// 请求成功

var data=JSON.parse(obj);

if(data.status==1){

$.messager.progress(‘close’);

layerOpen(‘提示’,‘添加成功!’);

//$(‘#win_add_Excel’).window(‘close’);

$(‘.add-resource-file’).fadeOut();

$(‘.z_photo’).html(‘’);

$(‘#addResource’)[0].reset();

initResources(pageNo,resSize,“”,“”,“”);

}else{

$.messager.progress(‘close’);

layerOpen(‘提示’,data.msg);

}

},

error: function(res) {

// 请求失败

console.log(res);

}

});

6、IE6-IE8支持HTML5标签

/方法三/

Date.prototype.format = function (mask) {

var d = this;

var zeroize = function (value, length) {

if (!length) length = 2;

value = String(value);

for (var i = 0, zeros = ‘’; i < (length - value.length); i++) {

zeros += ‘0’;

}

return zeros + value;

};

return mask.replace(/"[“]*”|'[‘]*’|/b ( ? : d {

1, 4

} | m {

1, 4

} | yy( ? : yy) ? | ([hHMstT]) / 1 ? | [lLZ]) / b / g, function ($0) {

switch ($0) {

case ‘d’:

return d.getDate();

case ‘dd’:

return zeroize(d.getDate());

case ‘ddd’:

return [‘Sun’, ‘Mon’, ‘Tue’, ‘Wed’, ‘Thr’, ‘Fri’, ‘Sat’][d.getDay()];

case ‘dddd’:

return [‘Sunday’, ‘Monday’, ‘Tuesday’, ‘Wednesday’, ‘Thursday’, ‘Friday’, ‘Saturday’][d.getDay()];

case ‘M’:

return d.getMonth() + 1;

case ‘MM’:

return zeroize(d.getMonth() + 1);

case ‘MMM’:

return [‘Jan’, ‘Feb’, ‘Mar’, ‘Apr’, ‘May’, ‘Jun’, ‘Jul’, ‘Aug’, ‘Sep’, ‘Oct’, ‘Nov’, ‘Dec’][d.getMonth()];

case ‘MMMM’:

return [‘January’, ‘February’, ‘March’, ‘April’, ‘May’, ‘June’, ‘July’, ‘August’, ‘September’, ‘October’, ‘November’, ‘December’][d.getMonth()];

case ‘yy’:

return String(d.getFullYear()).substr(2);

case ‘yyyy’:

return d.getFullYear();

case ‘h’:

return d.getHours() % 12 || 12;

case ‘hh’:

return zeroize(d.getHours() % 12 || 12);

case ‘H’:

return d.getHours();

case ‘HH’:

return zeroize(d.getHours());

case ‘m’:

return d.getMinutes();

case ‘mm’:

return zeroize(d.getMinutes());

case ‘s’:

return d.getSeconds();

case ‘ss’:

return zeroize(d.getSeconds());

case ‘l’:

return zeroize(d.getMilliseconds(), 3);

case ‘L’:

var m = d.getMilliseconds();

if (m > 99) m = Math.round(m / 10);

return zeroize(m);

case ‘tt’:

return d.getHours() < 12 ? ‘am’ : ‘pm’;

case ‘TT’:

return d.getHours() < 12 ? ‘AM’ : ‘PM’;

case ‘Z’:

return d.toUTCString().match(/[A-Z]+$/);

// Return quoted strings with the surrounding quotes removed

default:

return $0.substr(1, $0.length - 2);

}

});

};

12、window.url.createobjecturl 兼容多个浏览器

(IE,google,360,Safari,firefox)blog.csdn.net/ybb35068001…

<asp:FileUpload ID=“file_head” runat=“server” οnchange=“javascript:setImagePreview();” />

//http://blog.csdn.net/qq_24148225/article/details/53187149?locationNum=5&fps=1

if(navigator.userAgent.indexOf(“MSIE 9.0”)>0){//判断ie浏览器版本

var pic = document.getElementById(“showLogo”),

file = document.getElementById(“logo”);

file.select();

//由于ie9的安全性,若没有focus()聚焦到其他button,div等,document.selection.createRange().text将会报错

//(这里的save是一个button,若focus到div这个div需要至少有1px)

document.getElementById(“save”).focus();

//file.blur();

var reallocalpath = document.selection.createRange().text;

pic.style.filter = “progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=‘scale’,src=”" + reallocalpath + “”)";//增加滤镜

//这里设置预览图片pic的大小

pic.style.width = “180px”;

pic.style.height = “130px”;

// 设置img的src为base64编码的透明图片 取消显示浏览器默认图片

pic.src = ‘data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==’;

}else{

//其他浏览器

document.getElementById(“showLogo”).src =getFileUrl(“logo”);

}

function getFileUrl(fileName){

var url ;

if (navigator.userAgent.indexOf(“MSIE”)>=1) {

url = document.getElementById(sourceId).value; // IE10,11可以使用这种方式

} else if(navigator.userAgent.indexOf(“Firefox”)>0) { // Firefox

url = window.URL.createObjectURL(document.getElementById(fileName).files.item(0));

} else if(navigator.userAgent.indexOf(“Chrome”)>0) { // Chrome

url = window.URL.createObjectURL(document.getElementById(fileName).files.item(0));

} else{

url = window.URL.createObjectURL(document.getElementById(fileName).files.item(0));

}

return url;

}

13、禁止右键及复制粘贴事件

//http://www.cnblogs.com/ZDPPU/p/5950408.html

oncontextmenu事件单禁用右键菜单 一个页面中,BODY中用oncontextmenu='return false'来取消鼠标右键;在JS中设置oncontextmenu='return true'window.document.oncontextmenu = function(){ return false;}

onconTextmenu=window.event.returnValue=false;右键菜单禁用,用这个可以禁止复制。

在中加入属性代码:

οncοntextmenu=“return false”

onselectstart=“return false” //禁止选中网页上的内容

οncοpy=“return false” //防复制用户在网页上选中的内容

防止用户另存网页: 利用<noscript><iframe src=*.html></iframe></noscript>标签,能防止网页的直接另存,但不能防止网页被人使用工具下载

*为通配符。

例1:

OnContextMenu事件
你按下了鼠标右键,但是右键菜单不能 显示!
你按下了Ctrl+鼠标右键,可以显示右键菜单。

//禁用鼠标事件

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);

}

最后

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

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

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

}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);

}

最后

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

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

[外链图片转存中…(img-TOsDqf4N-1715883835050)]

[外链图片转存中…(img-u9m2OMkg-1715883835050)]

[外链图片转存中…(img-7l89IVvM-1715883835051)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

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

  • 24
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值