UNPKG

bin-ui

Version:

基于 vue2.6 / vue-cli3 的 UI 组件库

77 lines (69 loc) 2.09 kB
function has(browser) { const ua = navigator.userAgent if (browser === 'ie') { const isIE = ua.indexOf('compatible') > -1 && ua.indexOf('MSIE') > -1 if (isIE) { const reIE = new RegExp('MSIE (\\d+\\.\\d+);') reIE.test(ua) return parseFloat(RegExp['$1']) } else { return false } } else { return ua.indexOf(browser) > -1 } } const csv = { _isIE11() { let iev = 0 const ieold = (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) const trident = !!navigator.userAgent.match(/Trident\/7.0/) const rv = navigator.userAgent.indexOf('rv:11.0') if (ieold) { iev = Number(RegExp.$1) } if (navigator.appVersion.indexOf('MSIE 10') !== -1) { iev = 10 } if (trident && rv !== -1) { iev = 11 } return iev === 11 }, _isEdge() { return /Edge/.test(navigator.userAgent) }, _getDownloadUrl(text) { const BOM = '\uFEFF' // Add BOM to text for open in excel correctly if (window.Blob && window.URL && window.URL.createObjectURL) { const csvData = new Blob([BOM + text], { type: 'text/csv' }) return URL.createObjectURL(csvData) } else { return 'data:attachment/csv;charset=utf-8,' + BOM + encodeURIComponent(text) } }, download(filename, text) { if (has('ie') && has('ie') < 10) { // has module unable identify ie11 and Edge const oWin = window.top.open('about:blank', '_blank') oWin.document.charset = 'utf-8' oWin.document.write(text) oWin.document.close() oWin.document.execCommand('SaveAs', filename) oWin.close() } else if (has('ie') === 10 || this._isIE11() || this._isEdge()) { const BOM = '\uFEFF' const csvData = new Blob([BOM + text], { type: 'text/csv' }) navigator.msSaveBlob(csvData, filename) } else { const link = document.createElement('a') link.download = filename link.href = this._getDownloadUrl(text) document.body.appendChild(link) link.click() document.body.removeChild(link) } } } export default csv