1.9.3 • Published 2 days ago

@wecity/tdesign-vue-ie v1.9.3

Weekly downloads
-
License
MIT
Repository
-
Last release
2 days ago

@wecity/tdesign-vue-ie

介绍

@wecity/tdesign-vue-ie 是基于 Tdesign Vue 2.x 组件库可兼容 IE >= 9 浏览器的 IE 兼容包,本库旨在解决 tdesign-vue 库在 IE 中出现的样式、组件等兼容问题。

使用说明

安装

  • 安装@wecity/tdesign-vue-ie
npm install @wecity/tdesign-vue-ie --save
# or
yarn add @wecity/tdesign-vue-ie

兼容包配置

更改vue.config.js transpileDependencies中添加兼容库配置

export.module = {
  transpileDependencies: ['tdesign-icons-vue'],
}

babel 依赖

{
  "@vue/cli-plugin-babel": "~4.5.0",
  "babel-core": "^6.26.3",
  "babel-eslint": "^10.1.0",
  "babel-loader": "7",
  "babel-plugin-lodash": "^3.3.4",
  "babel-polyfill": "^6.26.0",
  "babel-preset-env": "^1.7.0"
}

babel.config.js or .babelrc 兼容配置

module.exports = {
  presets: [
    [
      '@vue/cli-plugin-babel/preset',
      {
        useBuiltIns: 'entry',
      },
    ],
    [
      'env',
      {
        modules: false,
        useBuiltIns: 'entry',
        targets: {
          node: 'current',
        },
      },
    ],
  ],
  env: {
    development: {
      plugins: ['dynamic-import-node'],
    },
  },
  plugins: ['lodash'],
};

兼容包 API 说明

registerIEPolyfill

ie 兼容的注册方法

参数类型默认值是否必须说明
optionsobject{}registerIEPolyfill 方法的参数
options.autoAddClassbooleantrue自动添加包裹类
options.routerobjectnull路由实例,优化 ie9 下 placeholder 的事件解绑
setWrapperClass

动态修改包裹类:如果需求某些浏览器版本加入包裹类,某些浏览器版本不需要,则可以通过获取 setWrapperClass 方法设置

参数类型默认值是否必须说明
optionbooleantruesetWrapperClass 方法的参数
isMSIE

返回 ie 浏览器的版本的方法,不是 ie 浏览器时返回 false

兼容包注册

在 vue 项目中main.js 中添加引用

// JS,组件兼容
import { registerIEPolyfill, isMSIE } from '@wecity/tdesign-vue-ie';
// 样式兼容
if (isMSIE()) {
  // index.css文件主要目的是解决IE中css的变量不支持问题,引入index.css后无需引入tdesign的全局样式
  // 如果有自己的主题皮肤样式且自行解决css变量问题,也不需要引用index.css
  require('@wecity/tdesign-vue-ie/dist/theme/index.css');
  // ie.css文件主要目的是解决IE中不支持flex布局(IE9)以及其他属性不兼容问题,改写为其他属性
  require('@wecity/tdesign-vue-ie/dist/theme/ie.css');
}

registerIEPolyfill(options);

使用须知

有哪些不兼容的地方

全局
  • 自定义主题、暗黑模式
  • 渐变
    • 组件渐变效果将优雅降级,不影响功能使用;
    • 组件中涉及可设置色值渐变的 API,eg:progress 组件设置 color 的渐变;
  • 动画
    • 组件动画效果将优雅降级,不影响功能使用,eg:点击 button 的动画效果;
    • 组件中涉及可调整动画效果的 API,eg:progress 组件的 设置 status="'active'"的动画;
  • 自定义插入内容的 Flex 布局
    • message、alert、draw 等组件默认样式均正常,但若涉及自定义 icon、头部等场景,需自行调整 width/height;eg: alert 组件固定自定义 icon 宽度,若 icon 自定义 slot,需业务自行 css 设置宽度覆盖;
组件
  • Upload
  • Table
    • BaseTableCol Props: fixed 无效(IE9/10/11)。
  • Grid
    • Row Props: justify 的 space-between 与 space-around 属性无效(IE9/10/11);
    • Row Props: gutter 最大垂直距离为 100(IE9/10/11);
    • Col Props: flex、order 无效(IE9/10/11);
  • Drawer
    • 兼容包使用了默认的 header 和 footer 高度去计算中间的 body 高度,以做到 header,body,footer 撑满 drawer 高度,又不会出现滚动条的效果。不支持动态的 footer, header 高度,若用户自定义 footer,header 高度,需自行覆盖 body 的高度,避免样式出现异常(IE9/10/11)。
  • Dialog
    • Dialog 拖拽功能失效(IE9/10/11)。
  • Notification
    • Notification 固定三行高度,文案太长时内容将自动显示...,在 IE 下将优雅降级,无"..."效果(IE9/10/11)。
  • Icon
    • loading 图标: 在 IE9 的浏览器下不支持动画,loading 图标无法旋转。

Layout 组件兼容情况

layout默认使用block(inline-block)布局。兼容包还提供了一种table布局。目的是兼容复杂布局的情况。在对应的t-layoutclass .t-table-layout

<t-layout class="t-table-layout">
  <t-header>Header</t-header>
  <t-content>Content</t-content>
  <t-footer>Footer</t-footer>
</t-layout>

Upload 组件兼容情况

根据 Tdesign Upload 组件进行扩展开发兼容支持 IE>=9 版本 IE 浏览器 官方 Upload API 文档(https://tdesign.tencent.com/vue/components/upload?tab=api)

API 兼容清单

API说明Tdesign UploadIE Upload
accept文件类型file_extension audio/* video/* image/* media_typefile_extension image/* image/type
action上传接口地址
autoUpload自动上传
beforeUpload上传文件前钩子函数
data上传文件额外数据
default触发上传内容
disabled是否禁用
draggable是否拖拽上传IE>=10
fileListDisplay用于完全自定义文件列表内容
files已上传文件列表(注意是上传完成的列表)
defaultFiles已上传文件列表, 非受控属性(理解读取已有数据时设置))
format文件上传前转换文件数据
formatResponse用于格式化文件上传后的响应数据。error 用于显示错误提示,如果 error 值为真,组件会判定为上传失败;url 用于上传文件/图片地址
headers设置上传的请求头部IE 9版本header数据设置在request body
isBatchUpload是否做为一个独立文件包提交
max控制文件最大上传个数默认为:0默认为:50
methodHTTP 请求类型可选: POST/GET/PUT/OPTIONIE9 只能使用POST, IE 10,IE 11 可支持 POST, GET, PUT, OPTION
multiple是否多文件IE下支持多文件上传,不支持一次选择多个文件
name文件上传时的名称
placeholder占位符
requestMethod自定义上传方法IE下自定义上传行参为Form表单对象``requestMethod(file, ieUpload)
showUploadProgress是否显示上传进度IE版本 >= 10
sizeLimit文件大小限制IE版本 >= 10
theme组件风格
tips小文本提示
trigger触发上传的内容
uploadAllFilesInOneRequest是否合并上传
useMockProgress是否展示模拟进度
withCredentials上传是否携带 cookieIE版本 >= 10
onCancelUpload点击取消上传
onChange已上传文件列表发生变化
onDragenter进入拖拽区域IE版本 >= 10
onDragleave拖拽结束IE版本 >= 10
onFail上传失败
onPreview点击预览IE9浏览器需上传完成后,后端返回文件URL给前端设置后方可使用, IE>9
onProgress上传进度发生变化时触发IE版本 >= 10
onRemove删除文件时触发
onSelectChange文件选择后触发
onSuccess文件上传成功后触发
showSize列表模式是否展示文件大小列

IE 兼容服务端协议说明

  • IE9 浏览器不支持application/json解析,当服务端返回 json 数据 IE9 浏览器下会当成文件下载,需要后端做浏览器兼容响应
  • 所以 IE9 浏览器服务响应需设置content-type类型为:text/plaintext/json
IE9 IE10IE10, IE11
text/plain text/jsonapplication/json
# python flask
user_agent = request.headers.get('User-Agent')
if user_agent.browser == 'MSIE' and user_agent.version == '9':
  response.setHeader('content-type', 'text/json')
else:
  response.setHeader('content-type', 'application/json')

IE 浏览器兼容支持

IE9IE10IE11edge

accept

不支持 audio/ video/ 设置

ValueDescription
file_extensiongif,jpg,png,exe,doc,xml 文件后缀设置
image/*图形文件
image/typeimage/gif image/png 单个图形文件类型
// 图形文件支持类型
export const ImageAccept = [
  'jpg',
  'png',
  'gif',
  'bmp',
  'webp',
  'jpeg',
  'svg',
  'pcx',
  'wmf',
  'dxf',
  'cgm',
  'xpm',
  'tif',
  'tiff',
  'avci',
  'avcs',
  'avif',
  'avifs',
];

headers

IE9IE10, IE11
request.bodyrequest.header

sizeLimit

IE9IE10, IE11
前端不可验证,需服务端验证前端可验证

requestMethod 参数对比

参数IE9IE10, IE11
file前端构建的 file 对象event.target.file
ieUploaduploadIe form 表单对象null
requestMethod(file, ieUpload = null) {
  return new Promise(function(resolve, reject) {
    if (ieUpload) {
      const { uploadIe } = ieUpload;
      uploadIe.form.submit()
    }
  })
}
1.9.3

2 days ago

1.9.1-patch.0

12 days ago

1.9.1

2 months ago

1.9.0

2 months ago

1.8.4

4 months ago

1.8.0

5 months ago

1.6.3

9 months ago

1.4.5

10 months ago

1.6.0

9 months ago

1.7.1

6 months ago

1.5.2

9 months ago

1.6.0-alpha.0

9 months ago

1.6.7

7 months ago

1.2.0

1 year ago

1.2.5

1 year ago

1.2.2

1 year ago

1.3.1

12 months ago

1.0.4-patch.1

1 year ago

0.0.21-alpha.0

2 years ago

0.0.18-alpha.3

2 years ago

1.0.1

1 year ago

0.0.18-alpha.2

2 years ago

1.0.0

1 year ago

0.0.18-alpha.4

2 years ago

1.0.4

1 year ago

0.0.23-alpha.1

1 year ago

0.0.23-alpha.0

1 year ago

0.0.13-alpha.12

2 years ago

0.0.19-alpha.9

2 years ago

0.0.13-alpha.9

2 years ago

0.0.13-alpha.8

2 years ago

0.0.13-alpha.7

2 years ago

0.0.13-alpha.6

2 years ago

0.0.13-alpha.5

2 years ago

0.0.13-alpha.4

2 years ago

0.0.13-alpha.3

2 years ago

0.0.13-alpha.2

2 years ago

0.0.13-alpha.1

2 years ago

0.0.13-alpha.0

2 years ago

0.0.20-alpha.5

2 years ago

0.0.20

2 years ago

0.0.20-alpha.4

2 years ago

0.0.21

1 year ago

0.0.20-alpha.3

2 years ago

0.0.19-alpha.0

2 years ago

0.0.22

1 year ago

0.0.23

1 year ago

0.0.22-alpha.0

1 year ago

0.0.24

1 year ago

0.0.19-alpha.5

2 years ago

0.0.19-alpha.6

2 years ago

0.0.19-alpha.7

2 years ago

0.0.19-alpha.8

2 years ago

0.0.17-alpha.1

2 years ago

0.0.19-alpha.1

2 years ago

0.0.19-alpha.2

2 years ago

0.0.19-alpha.3

2 years ago

1.1.2

1 year ago

0.0.19-alpha.4

2 years ago

0.0.15

2 years ago

0.0.16

2 years ago

0.0.22-alpha.1

1 year ago

0.0.18

2 years ago

0.0.20-alpha.2

2 years ago

0.0.19

2 years ago

0.0.19-alpha.10

2 years ago

0.0.20-alpha.1

2 years ago

0.0.20-alpha.0

2 years ago

0.0.13-alpha.11

2 years ago

0.0.13-alpha.10

2 years ago

0.0.12-alpha.7

2 years ago

0.0.12

2 years ago

0.0.13

2 years ago

0.0.14

2 years ago

0.0.12-alpha.9

2 years ago

0.0.12-alpha.8

2 years ago

1.1.2-patch.0

1 year ago

0.0.14-alpha.0

2 years ago

0.0.12-alpha.6

2 years ago

0.0.12-alpha.5

2 years ago

0.0.12-alpha.4

2 years ago

0.0.12-alpha.3

2 years ago

0.0.12-alpha.2

2 years ago

0.0.12-alpha.1

2 years ago

0.0.12-alpha.0

2 years ago

0.0.11

2 years ago

0.0.11-alpha.1

2 years ago

0.0.11-alpha.0

2 years ago

0.0.10

2 years ago

0.0.9

2 years ago

0.0.8

2 years ago

0.0.7

2 years ago

0.0.6

2 years ago

0.0.5

2 years ago

0.0.4

2 years ago

0.0.3

2 years ago

0.0.2

2 years ago

0.0.1

2 years ago