admin管理员组文章数量:1130349
这段时间遇到项目上的一个错误:
360浏览器,兼容模式下(即IE内核)打开项目。调整浏览器大小的时候,在如下的代码段抛如下异常:出错:无法获取未定义或null引用的属性“clientX”。
但是谷歌、火狐、IE都不会出现该错误。
通过在360浏览器调试查看到报错的代码段为如下。抛错是因为这里的event事件为undefined。
if(client_x != event.clientX || client_y != event.clientY){ client_x = event.clientX; client_y = event.clientY; window_onresize_org(); }
然后在项目里面全局搜索改代码段,竟然找不到~~。只能怀疑该代码是不是360浏览器本身植入的(因为以前遇到过一次类似的问题)。
一开始的思路是觉得无法避开该代码(如果仍然是在该浏览器上运行的话),那么就在触发该代码前判断event是否为undefined。如果是,那么不去执行。
具体避开的做法是通过调试时候查看堆栈,找到我们自己的项目的代码的调用入口,然后对对象的event进行判断。但是发现这样并不行,因为通过我们的代码入口,经过jquery的一系列调用跳转后,到达该抛错代码时,对象或许已经不是原来的那个对象了。 、
后面只能另想他法。考虑到这是调整浏览器大小引起的,而且有自定义window.onresize事件。那么就先从这个事件跟踪起。后面竟然发现这个onresize事件竟然在不知道什么时候已经被重写了。即使在执行我们自定义的onresize事件时,通过监视得到的onresize的定义已然改变!而且这个代码就是那报错的代码!
到这里后至少知道了问题出在哪里。接下来只能在触发这个bug的我们的代码的入口来重置onresize事件(如果是360浏览器且是兼容模式的话)。
至于说onresize事件什么时候被修改了就不知道从哪里查了。。
转载于:https://wwwblogs/herohh/p/10783129.html
这段时间遇到项目上的一个错误:
360浏览器,兼容模式下(即IE内核)打开项目。调整浏览器大小的时候,在如下的代码段抛如下异常:出错:无法获取未定义或null引用的属性“clientX”。
但是谷歌、火狐、IE都不会出现该错误。
通过在360浏览器调试查看到报错的代码段为如下。抛错是因为这里的event事件为undefined。
if(client_x != event.clientX || client_y != event.clientY){ client_x = event.clientX; client_y = event.clientY; window_onresize_org(); }
然后在项目里面全局搜索改代码段,竟然找不到~~。只能怀疑该代码是不是360浏览器本身植入的(因为以前遇到过一次类似的问题)。
一开始的思路是觉得无法避开该代码(如果仍然是在该浏览器上运行的话),那么就在触发该代码前判断event是否为undefined。如果是,那么不去执行。
具体避开的做法是通过调试时候查看堆栈,找到我们自己的项目的代码的调用入口,然后对对象的event进行判断。但是发现这样并不行,因为通过我们的代码入口,经过jquery的一系列调用跳转后,到达该抛错代码时,对象或许已经不是原来的那个对象了。 、
后面只能另想他法。考虑到这是调整浏览器大小引起的,而且有自定义window.onresize事件。那么就先从这个事件跟踪起。后面竟然发现这个onresize事件竟然在不知道什么时候已经被重写了。即使在执行我们自定义的onresize事件时,通过监视得到的onresize的定义已然改变!而且这个代码就是那报错的代码!
到这里后至少知道了问题出在哪里。接下来只能在触发这个bug的我们的代码的入口来重置onresize事件(如果是360浏览器且是兼容模式的话)。
至于说onresize事件什么时候被修改了就不知道从哪里查了。。
转载于:https://wwwblogs/herohh/p/10783129.html
版权声明:本文标题:360浏览器兼容模式下,浏览器调整大小时抛脚本异常的问题 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://it.en369.cn/jiaocheng/1755024657a2754713.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论