12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- // 解析版本号为数组,便于比较
- function parseVersion(versionString) {
- return versionString.split('.').map(Number);
- }
- // 比较版本号 (a > b 返回1, a == b返回0, a < b返回-1)
- function compareVersions(versionA, versionB) {
- const aParts = parseVersion(versionA);
- const bParts = parseVersion(versionB);
- const maxLength = Math.max(aParts.length, bParts.length);
-
- for (let i = 0; i < maxLength; i++) {
- const a = aParts[i] || 0;
- const b = bParts[i] || 0;
-
- if (a > b) return 1;
- if (a < b) return -1;
- }
-
- return 0;
- }
- // 获取浏览器信息
- function getBrowserInfo() {
- const userAgent = 'mozilla/5.0 (windows nt 10.0; win64; x64) applewebkit/537.36 (khtml, like gecko) chrome/109.0.0.0 safari/537.36' || navigator.userAgent.toLowerCase();
- let browserInfo = {
- name: 'Unknown',
- version: 'Unknown',
- versionParts: []
- };
- // 检测浏览器类型和版本
- if (/edge\/([\d.]+)/.test(userAgent)) {
- browserInfo.name = 'Edge';
- browserInfo.version = userAgent.match(/edge\/([\d.]+)/)[1];
- } else if (/chrome\/([\d.]+)/.test(userAgent) && !/edge/.test(userAgent)) {
- browserInfo.name = 'Chrome';
- browserInfo.version = userAgent.match(/chrome\/([\d.]+)/)[1];
- } else if (/firefox\/([\d.]+)/.test(userAgent)) {
- browserInfo.name = 'Firefox';
- browserInfo.version = userAgent.match(/firefox\/([\d.]+)/)[1];
- } else if (/safari\/([\d.]+)/.test(userAgent) && !/chrome/.test(userAgent)) {
- browserInfo.name = 'Safari';
- // Safari的版本号在version/后面
- browserInfo.version = userAgent.match(/version\/([\d.]+)/)[1];
- } else if (/msie ([\d.]+)/.test(userAgent) || /rv:([\d.]+)/.test(userAgent)) {
- browserInfo.name = 'Internet Explorer';
- browserInfo.version = userAgent.match(/(msie |rv:)([\d.]+)/)[2];
- }
- // 解析版本号为数组
- if (browserInfo.version !== 'Unknown') {
- browserInfo.versionParts = parseVersion(browserInfo.version);
- }
-
- // 添加版本比较方法
- browserInfo.isGreaterThan = function(version) {
- return compareVersions(this.version, version) > 0;
- };
-
- browserInfo.isLessThan = function(version) {
- return compareVersions(this.version, version) < 0;
- };
-
- browserInfo.isEqual = function(version) {
- return compareVersions(this.version, version) === 0;
- };
-
- browserInfo.isGreaterOrEqual = function(version) {
- return compareVersions(this.version, version) >= 0;
- };
-
- browserInfo.isLessOrEqual = function(version) {
- return compareVersions(this.version, version) <= 0;
- };
- return browserInfo;
- }
- // 使用示例
- export const browser = getBrowserInfo();
- console.log(`浏览器: ${browser.name} ${browser.version}`);
- // 版本比较示例
- if (browser.name === 'Chrome') {
- if (browser.isLessThan('90.0.0')) {
- console.log('你的Chrome浏览器版本过低,请升级到90.0.0或更高版本');
- } else {
- console.log('你的Chrome浏览器版本符合要求');
- }
- }
- if (browser.name === 'Firefox') {
- if (browser.isGreaterOrEqual('88.0')) {
- console.log('你的Firefox浏览器支持最新特性');
- }
- }
|