首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >最近遇到的兼容性问题和适配问题

最近遇到的兼容性问题和适配问题

作者头像
SmileSmith
发布于 2018-04-16 10:06:31
发布于 2018-04-16 10:06:31
1.8K00
代码可运行
举报
文章被收录于专栏:向前进向前进
运行总次数:0
代码可运行

JS:

IE:

1、不能添加监听标准事件,添加polyfill

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    initEvent: function initEvent(dom, eventName, callback) {
      if (!dom || !eventName || !callback) return;
      if (document.addEventListener) { // 一般浏览器
        dom.addEventListener(eventName, callback, false);
      } else if (document.attachEvent) { // IE
        dom.attachEvent('on' + eventName, callback);
      } else {
        dom['on' + eventName] = callback;
      }
    },

2、不支持classlist,添加polyfill模拟jquery

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    addClass: function addClass(dom, className) {
      if (!dom) return;
      if (this.hasClass(dom, className)) return;
      dom.className = dom.className + ' ' + className;
    },

    removeClass: function removeClass(dom, className) {
      if (!dom) return;
      dom.className = dom.className.replace(' ' + className, '');
      dom.className = dom.className.replace(className, '');
    },

    hasClass: function hasClass(dom, className) {
      return dom.className.match(' ' + className) || dom.className.match(className);
    },

    toggleClass: function toggleClass(dom, className) {
      if (this.hasClass(dom, className)) {
        this.removeClass(dom, className);
      } else {
        this.addClass(dom, className);
      }
    },

3、不支持HTML5新标签,引入HTML5SHIV

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script src="./static/html5shiv.min.js"></script>

CSS

IE:

1、IE7及以下display: inline-block表现异常,div设置为inline-block显示为block:

  解决方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    display: inline-block;
  
  /* IE7及以下的Polyfill */

    display: inline-block;
    *zoom: 1;
    *display: inline;

  原理:IE7及以下识能别到  *[属性key],利用IE7中inline-block表现为block可以设置宽高,然后利用*zoom触发重排,利用*display覆盖block

2、IE8及以下不支持background-size:

  解决方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   padding-bottom: 36.7630492%;
   background: url('../../static/images/home_one@1x.png') no-repeat center;
   background-size: 100% 100%;

   /* IE8 background-size Hack */
   filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(
      src='../../static/images/home_one@1x.png',
      sizingMethod='scale');

  原理:利用IE中的过滤器对象处理,会有轻微闪烁问题。

3、IE10、IE11、IE edge中 flex + min-height 导致高度丢失

  解决方法: 参考 solved-by-flexbox :https://github.com/philipwalton/solved-by-flexbox/blob/master/assets/css/components/site.css

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.root {
 min-width: 960px;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  height: 100%; /* 在min-height之外用100%高度, 利用content撑开*/
}

.header-back {
  flex: none; /* 固定 */
  display: block;
  width: 100%;
  height: 64px;
}

.content {
  flex: 1 0 auto; /* 弹性 */
  margin: 15px auto;
  width: 100%;
  max-width: 1266px;
}

.footer {
  flex: none; /* 固定 */
  display: block;
  width: 100%;
  height: 60px;
}

Safari:

1、Safari中min-width: unset无效:

  解决方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  min-width: 900px;
  ...
  @media screen and (max-width: $min-width) {
    min-width: unset;
    ...
  }

  /* 改为不会生效的值0px */
  min-width: 900px;
  ...
  @media screen and (max-width: $min-width) {
    min-width: 0px;
    ...
  }

  原理:IE7中和Android4.3版本也不支持unset,但是会当做无效值覆盖之前的min-width,而在Safari5中,会当做无效的代码,元素会保持原来的min-width。

2、IOS9中光标定位问题:

  在Vue2.4版本以下,nextTick实现是以MO和Promise为优先的策略,(MO和Promise都为MicroTask,优先执行)

  当一个input值改变事件如有有Watcher监听,并且在Watcher触发了另外的DOM元素重绘,多次重绘会导致input框的渲染不生效

  解决方法:

    1、把可能影响DOM的渲染domtask放入下一个MacroTask,这样就会等到input渲染完毕再执行domtask

    2、升级Vue至最新版本,最新版本中nextTick在WacherDOM的onXXX事件时,优先以MacroTask执行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
     
watcher: {
  inputValue(){
    // ...
    setTimeout(() => {
          // 其他可能影响DOM渲染的task,比如
          //  this.showFlag = false;
        }, 0);
    // ...
  },
}

Android Browser:

1、Android4.3下不支持 vw宽度:

  解决方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  position: absolute;
  right: 0;
  top: 0;
  width: 100%;

  原理:将父元素100%宽度,子元素绝对定位,宽度100%

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-11-30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
centos7安装配置prometheus
centos7安装配置prometheus 更新系统&禁用selinux yum update -y sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux #reboot 下载prometheus安装包 去官网下载地址下载相关软件包:https://prometheus.io/download/ # 执行下面命令下载 wget https://github.com/prometheus/prometheus/rele
shaonbean
2019/08/29
3K0
prometheus+telegraf+grafana监控学习(一)
普罗米修斯下载地址:https://prometheus.io/download/
Bob hadoop
2020/12/09
6.2K1
prometheus+telegraf+grafana监控学习(一)
Prometheus部署
5、Master节点编辑“prometheus.yml”增加“node_exporter”IP
kevin_yyc
2021/04/14
8600
Prometheus部署
第三章·Logstash入门-部署与测试
Logstash是一个开源的数据收集引擎,可以水平伸缩,而且logstash整个ELK当中拥有最多插件的一个组件,其可以接收来自不同来源的数据并统一输出到指定的且可以是多个不同目的地。
DriverZeng
2022/09/26
4040
第三章·Logstash入门-部署与测试
安装Docker-使用YUM
Docker运行在CentOS7上,要求系统为64位、系统内核版本为3.10以上。
郑郑SunUp
2025/01/08
3280
第一章·ELKstack介绍及Elasticsearch部署
通俗来讲,ELK是由Elasticsearch、Logstash、Kibana 三个开源软件的组成的一个组合体,这三个软件当中,每个软件用于完成不同的功能,ELK 又称为ELK stack,官方域名为elastic.co,ELK stack的主要优点有如下几个:
DriverZeng
2022/09/26
4010
第一章·ELKstack介绍及Elasticsearch部署
一文入门Springboot+actuator+Prometheus+Grafana
QGS
2023/11/10
4600
nginx实现最简单的直播平台
-多年互联网运维工作经验,曾负责过大规模集群架构自动化运维管理工作。 -擅长Web集群架构与自动化运维,曾负责国内某大型金融公司运维工作。 -devops项目经理兼DBA。 -开发过一套自动化运维平台(功能如下): 1)整合了各个公有云API,自主创建云主机。 2)ELK自动化收集日志功能。 3)Saltstack自动化运维统一配置管理工具。 4)Git、Jenkins自动化代码上线及自动化测试平台。 5)堡垒机,连接Linux、Windows平台及日志审计。 6)SQL执行及审批流程。 7)慢查询日志分析web界面。
DriverZeng
2022/09/26
7530
nginx实现最简单的直播平台
采用『Prometheus+Grafana』安装部署方式实现对Linux系统主机监控管理
文章目录 〇、参考链接 一、前期准备 1、安装CentOS系统 2、准备部署环境 (1)修改主机名 (2)查看CentOS版本号 (3)配置网络参数信息 (4)关闭防火墙 (5)关闭SELINUX安全模式 3、测试网络连通性 4、备份并缓存YUM源 5、重新加载YUM源镜像 6、更新YUM源仓库 二、环境部署规划表 三、操作步骤 Ⅰ、Prometheus服务端安装部署 1.1、安装Go环境 1.2、将Go压缩包解压 1.3、配置环境变量 1.4、测试Go环境是否安装成功 2.1、下载 Prometheus
宝耶需努力
2022/12/13
3.6K0
采用『Prometheus+Grafana』安装部署方式实现对Linux系统主机监控管理
007.基于CentOS7.8安装Ambari2.7+HDP3.1大数据平台
我这里创建了一个普通用户名为admin,并且具有sudo权限,4个节点都需要有这个用户。
CoderJed
2020/10/30
2.4K1
007.基于CentOS7.8安装Ambari2.7+HDP3.1大数据平台
CentOS7 Samba服务安装实现目录共享
Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件。由服务器及客户端程序构成,可实现Linux目录共享,然后再Windows系统中链接访问共享目录。
子润先生
2021/06/23
1K0
Prometheus监控-主平台安装
同步时间 yum -y install ntpdate #同步时间 timedatectl set-timezone Asia/Shanghaintpdate ntp.aliyun.comhwclock -wsed -i 's%SYNC_HWCLOCK=no%SYNC_HWCLOCK=yes%' /etc/sysconfig/ntpdateecho "* 23 * * * root /usr/sbin/ntpdate ntp.aliyun.com" >> /etc/crontab && crontab /
豌豆日志
2021/06/09
3200
Prometheus监控-主平台安装
Linux的基本优化
selinux 安全增强型 Linux(Security-Enhanced Linux)简称 SELinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统。SELinux 主要由美国国家安全局开发。它的主要 作用就是最大限度地减小系统中服务进程可访问的资源(最小权限原则)。也由于它的这个原则,导致我们很多操作无法正确的执行,所以对于初学者而言在会用selinux之前我们要把这个子系统关闭
星哥玩云
2022/09/15
1.3K0
Linux的基本优化
10.12 firewalld和netfilter
Linux防火墙-netfilter selinux临时关闭 setenforce 0 selinux永久关闭 vi /etc/selinux/config centos7之前使用netfilter防火墙 centos7开始使用firewalld防火墙 关闭firewalld开启netfilter方法 systemctl stop firewalld systemctl disable firewalled yum install -y iptables-services systemctl enable
运维小白
2018/02/06
1.2K0
Ambari2.7.1安装
注:主机名修改后需要重启机器才可彻底生效。如果用户不想重启,可使用命令 hostnamectlset-hostname node1.ambari.com来修改主机名,可使用命令 hostname来检验主机名是否修改成功。这种修改方式只是暂时的,待机器重启后就恢复原样 localhost了。
create17
2018/12/12
1.9K0
Ambari2.7.1安装
Ambari2.7安装配置
下载链接: https://pan.baidu.com/s/1rlqZejpZZqio9RPzgnGOEg 提取码: j47n ;内有jdk-8u151-linux-x64.tar.gz和mysql-connector-java.jar文件。
create17
2019/03/12
1.3K0
【A-lab】Prometheus监控系统部署方案
Prometheus是一个最初在SoundCloud上构建的开源系统监视和警报工具包。自2012年成立以来,许多公司和组织都采用了Prometheus,该项目拥有非常活跃的开发者和用户社区。它现在是一个独立的开源项目,可以独立于任何公司进行维护。为了强调这一点,并阐明项目的治理结构,Prometheus于2016年加入Cloud Native Computing Foundation,作为继Kubernetes之后的第二个托管项目。
星融元Asterfusion
2025/08/11
1330
【A-lab】Prometheus监控系统部署方案
一文读懂Springboot+Prometheus开发运维一体化
一文读懂Springboot+mybatis-plus+actuator+Prometheus+Grafana+Swagger2.9.2开发运维一体化
QGS
2023/11/17
8790
CentOS 7.x安装配置openGauss数据库
openGauss是由华为开源的一款关系型数据库,基于PostgreSQL数据库开发。
会长君
2023/04/26
7850
linux常用命令(防火墙)
在部署和配置集群的时候,集群中的多台服务器需要通信,对于一些复杂的应用,例如consul、hadoop等,往往是客户端通信占用一个端口、Web UI占用一个端口、集群内的主机之间通信占用一个或多个端口。这样在测试环境部署的时候,如果启用防火墙,往往会因为漏掉放行某台服务器的某个端口,而造成连接失败。
张子阳
2018/09/28
3K0
相关推荐
centos7安装配置prometheus
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档