jQuery版本升级的问题

本文仅记录实际开发时遇到的一些jq升级兼容的问题,有则改之,无则加勉。

1. $.browser.msie报错,$.browser.msie 为空或不是对象的问题

报错信息:

Uncaught TypeError: Cannot read properties of undefined (reading 'msie')

报错截图
解决方案:
既然不支持,那就不用$.browser.msie来判断,直接替换即可。

$.browser.mozilla = /firefox/.test(navigator.userAgent.toLowerCase());
$.browser.webkit = /webkit/.test(navigator.userAgent.toLowerCase());
$.browser.opera = /opera/.test(navigator.userAgent.toLowerCase());
$.browser.msie = /msie/.test(navigator.userAgent.toLowerCase());

2. $(window).load()报错

报错信息:
我这边保存的原因是使用了插件,而插件中使用了$(window).load(),

$(window).load(function(){})

在这里插入图片描述
解决方案:
直接替换为$(document).ready()

$(document).ready(function(){})

报错信息为
jquery 3.3.1版本报错TypeError: e.indexOf is not a function,这是因为$(window).load方法已经废弃。

$(window).load(function(){});
修改为:

$(window).on(‘load’,function(){});

3. window.showModalDialog报错

报错信息:
Uncaught TypeError: window.showModalDialog is not a function

 window.showModalDialog(url,arr,'dialogHeight:600px;dialogWidth:1000px')

在这里插入图片描述
解决方案:
自己重新封装了新的open方法,兼容ie和谷歌

	// 父页面 
	windowOpen(url,arr,1000,600, callback)
	function callback(idAndNames) {
		// 窗口关闭之后回调 idAndNames为关闭时子窗口传参
		if(idAndNames!=null){
			console.log(idAndNames,'__idAndNames')
		}
	}
	// 自定义open弹窗
	function windowOpen(_url, arr , width, height, fn){
		returnValue = null;
		if(navigator.userAgent.indexOf("Chrome") >0 ){
			var iTop  = (window.innerHeight - height) / 2 ;
			var iLeft = (window.innerWidth  - width)  / 2 ;
			var x = (window.screenX || window.screenLeft || 0) + (iLeft || 0);
			var y = (window.screenY || window.screenTop || 0) + (iTop || 0);
			var _winOpen = window.open(_url,arr,"height="+height+",width="+width+",status=no,help=no,left="+x+",top="+y+"");
			var loop = setInterval(function (){    // 使用定时器查询当前状态
				if (_winOpen && _winOpen .closed) {  // 进行判断条件   closed属性就是返回当前窗口的状态
					clearInterval(loop);       // 清除定时器
					if(returnValue) fn(returnValue)
				}
			}, 500);
		}else{
			var _winOpen = window.showModalDialog(_url,arr,"dialogWidth:"+width+"px;dialogHeight:"+height+"px;status:0;help:no;");
			if(_winOpen!='close'){
				fn(_winOpen)
			}
		}
	}
	--------------------------------------------------------------------------------------------------------------------
	// 子页面
	// 如果父页面arr传参过来子页面接收
	var arrArguments = window.dialogArguments
	// 改为
	var arrArguments = window.dialogArguments || window.parent;
	// 所有操作完成之后关闭之后,如果需要传参给父页面
    if(window.parent) window.parent.returnValue=arr.join('_');
    if(window.opener) window.opener.returnValue=arr.join('_');

注意:如果子页面给父页面传参的时候一定要字符串,不然可能会出现其他问题。

4. 按下回车键,表单自动提交,禁止表单提交

报错信息:

按下回车键,表单自动提交,禁止表单提交
<form>
	<input id="input" />
	<input onclick="query();" type="button" value="查询" />
</form>

解决方案:
如果需要禁止表单提交之后调用接口,则加入query(),反之则删除。

<form>
	<input id="input" onkeydown="javascript:if(event.keyCode==13){query();return false}"  />
	<input onclick="query();" type="button" value="查询" />
</form>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值