当前位置: 首页 > Web前端 > CSS

即兼容性

时间:2023-03-31 12:25:31 CSS

即兼容性应该是每个前端都绕不过的问题。虽然我听说过它的恶名,但我以前从未解决过它。这周终于遇到了两个。这里写下问题和解决方案。ie的缓存第一个问题就是添加数据后,看不到新的数据,因为获取的都是缓存的数据。IE浏览器会在网页中缓存GET和XHR的内容,当请求方式为get方式时,IE浏览器会识别。如果get请求的url是第一次请求,会请求服务器从数据库中获取数据;如果get请求的url不是第一次请求,则该url不会请求服务器,IE浏览器会直接从缓存中获取该url上次获取的数据。不管插件的get请求,IE浏览器都会这样处理,会造成数据不同步。有很多解决方案。这里有两个我认为更好的。在header中设置no-cache参数letheaders=request.headers;/***发起get请求判断是否为ie时,加上no-cache因为ie会缓存所有get请求*///判断是否为ie以下方法可以测试ie6~ie11//https://stackoverflow.com/questions/48182912/how-to-detect-browser-with-angular//@ts-ignoreconstisIE=false||!!document.documentMode;if(request.method==='GET'&&isIE){headers=headers.append('Cache-Control','no-cache');headers=headers.append('Pragma','no-cache');}给请求加时间戳潘老师提供了另外一个思路,由于GET请求会被缓存,所以每次请求不同就可以了,可以通过加时间戳参数来实现。感觉这个设定真的太坑了。pointer-events项目中使用了sweetalert,但是每次弹出一个窗口,页面就不能再点击了。潘老师猜测是因为有一层mask没有取消,但是不清楚为什么,页面也不报错。后来在sweetalert的github上找到了原因,因为ie11及以下不支持pointer-eventscss属性。什么是指针事件?对于前端日常开发来说,只要知道none的值,就够我们玩一阵子了。指针事件:无;禁用鼠标事件(链接、点击等)。解决方案上面作者已经回答可以用visibility属性代替pointer-events来隐藏弹窗,解决方案css/*只支持IE8,9,10*//*TargetIE8-IE10due与css\`pointer-event\`属性不兼容。@seehttps://github.com/t4t5/sweetalert/issues/863*/@mediascreen\0{.swal-overlay{visibility:hidden;}.swal-overlay--show-modal{visibility:visible;}.swal-button__loader{visibility:hidden;}.swal-overlay--show-modal.swal-modal{visibility:visible;}.swal-modal{visibility:hidden;}}此问题已在最新的sweetalert代码中修复,但尚未发布到npm。有关详细信息,请参阅此问题。