获取浏览器信息方法有很多种,但是要是兼容ie旧版本就有点麻烦了,因为很多方法在旧版本ie是不支持的,所以ie我做了单独处理,但是目前还有小问题,就是想显示QQ浏览器,搜狗浏览器..这样的,这样还实现不了,因为他们用的别人的浏览器内核,没办法

代码:

<template>
<section class="p-10">
<h1> {{ browse }} </h1>
</section>
</template>
<script>
export default {
data() {
return {
browse: ''
};
},
methods: {
getBrowserInfo() {
let agent = navigator.userAgent.toLowerCase();
console.log(agent);
let arr = [];
let system = agent.split(' ')[1].split(' ')[0].split('(')[1];
arr.push(system);
let REGSTR_EDGE = /edge\/[\d.]+/gi;
let REGSTR_IE = /trident\/[\d.]+/gi;
let OLD_IE = /msie\s[\d.]+/gi;
let REGSTR_FF = /firefox\/[\d.]+/gi;
let REGSTR_CHROME = /chrome\/[\d.]+/gi;
let REGSTR_SAF = /safari\/[\d.]+/gi;
let REGSTR_OPERA = /opr\/[\d.]+/gi;
// IE
if (agent.indexOf('trident') > 0) {
arr.push(agent.match(REGSTR_IE)[0].split('/')[0]);
arr.push(agent.match(REGSTR_IE)[0].split('/')[1]);
return arr;
}
// OLD_IE
if (agent.indexOf('msie') > 0) {
arr.push(agent.match(OLD_IE)[0].split(' ')[0]);
arr.push(agent.match(OLD_IE)[0].split(' ')[1]);
return arr;
}
// Edge
if (agent.indexOf('edge') > 0) {
arr.push(agent.match(REGSTR_EDGE)[0].split('/')[0]);
arr.push(agent.match(REGSTR_EDGE)[0].split('/')[1]);
return arr;
}
// firefox
if (agent.indexOf('firefox') > 0) {
arr.push(agent.match(REGSTR_FF)[0].split('/')[0]);
arr.push(agent.match(REGSTR_FF)[0].split('/')[1]);
return arr;
}
// Opera
if (agent.indexOf('opr') > 0) {
arr.push(agent.match(REGSTR_OPERA)[0].split('/')[0]);
arr.push(agent.match(REGSTR_OPERA)[0].split('/')[1]);
return arr;
}
// Safari
if (agent.indexOf('safari') > 0 && agent.indexOf('chrome') < 0) {
arr.push(agent.match(REGSTR_SAF)[0].split('/')[0]);
arr.push(agent.match(REGSTR_SAF)[0].split('/')[1]);
return arr;
}
// Chrome
if (agent.indexOf('chrome') > 0) {
arr.push(agent.match(REGSTR_CHROME)[0].split('/')[0]);
arr.push(agent.match(REGSTR_CHROME)[0].split('/')[1]);
return arr;
} else {
arr.push('未获取到浏览器信息');
return arr;
}
}
},
mounted() {
let browserInfo = this.getBrowserInfo();
if (browserInfo[1] && browserInfo[2]) {
this.browse = this.getBrowserInfo()[1] + ' ' + this.getBrowserInfo()[2];
} else {
this.browse = '未获取到浏览器信息';
}
switch (this.browse) {
case 'msie 6.0':
this.browse = 'Internet Explorer 6';
break;
case 'msie 7.0':
this.browse = 'Internet Explorer 7';
break;
case 'trident 4.0':
this.browse = 'Internet Explorer 8';
break;
case 'trident 5.0':
this.browse = 'Internet Explorer 9';
break;
case 'trident 6.0':
this.browse = 'Internet Explorer 10';
break;
case 'trident 7.0':
this.browse = 'Internet Explorer 11';
break;
}
}
}
</script> <style lang="scss">
</style>

以下是参考资料:https://www.cnblogs.com/muscleape/p/6897356.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html> <head>
<base>
<meta charset="utf-8">
<title>JS获取浏览器类型和版本信息</title> <script>
function bro() {
var is360 = false;
var isIE = false;
var isFirefox = false;
var isChrome = false;
var isEdge = false;
var broName = 'Runing';
var str = '';
var strStart = 0;
var strStop = 0;
var arr = new Array();
var temp = ''; var userAgent = window.navigator.userAgent; //包含以下属性中所有或一部分的字符串:appCodeName,appName,appVersion,language,platform /*alert(userAgent);*/ //FireFox
if (userAgent.indexOf('Firefox') != -1) {
isFireFox = true;
/*broName = 'FireFox浏览器';*/
strStart = userAgent.indexOf('Firefox');
temp = userAgent.substring(strStart);
broName = temp.replace('/', '版本号') } //Edge
if (userAgent.indexOf('Edge') != -1) {
isEdge = true;
/*broName = 'Edge浏览器';*/
strStart = userAgent.indexOf('Edge');
temp = userAgent.substring(strStart);
broName = temp.replace('/', '版本号');
} //IE浏览器
if (userAgent.indexOf('NET') != -1 && userAgent.indexOf("rv") != -1) {
isIE = true;
/*broName = 'IE浏览器'; */
strStart = userAgent.indexOf('rv');
strStop = userAgent.indexOf(')');
temp = userAgent.substring(strStart, strStop);
broName = temp.replace('rv', 'IE').replace(':', '版本号');
} //360极速模式可以区分360安全浏览器和360极速浏览器
if (userAgent.indexOf('WOW') != -1 && userAgent.indexOf("NET") < 0 && userAgent.indexOf("Firefox") < 0) {
if(navigator.javaEnabled()){
is360 = true;
broName = '360安全浏览器-极速模式';
}else{
is360 = true;
broName = '360极速浏览器-极速模式';
}
} //360兼容
if (userAgent.indexOf('WOW') != -1 && userAgent.indexOf("NET") != -1 && userAgent.indexOf("MSIE") != -1 && userAgent.indexOf("rv") < 0) {
is360 = true;
broName = '360兼容模式';
} //Chrome浏览器
if (userAgent.indexOf('WOW') < 0 && userAgent.indexOf("Edge") < 0) {
isChrome = true;
/*broName = 'Chrome浏览器';*/
strStart = userAgent.indexOf('Chrome');
strStop = userAgent.indexOf(' Safari');
temp = userAgent.substring(strStart, strStop);
broName = temp.replace('/', '版本号'); } document.getElementById('broType').value = broName; }
</script>
</head> <body onload="bro();">
<input type="text" id="broType" name="broType" style="width: 200px;">
<h4>JavaScript获取浏览器版本信息</h4>
</body> </html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <head>
<title> New Document </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0,user-scalable=no">
<meta name="Generator" content="EditPlus">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta charset="utf-8" />
<meta name="Description" content=""> <script id=clientEventHandlersJS language=javascript>
/******************************************下为浏览器信息************************************************/
//获取浏览器相关信息
function allinfo() {
var appName = navigator.appName; //浏览器的正式名称
var appVersion = navigator.appVersion; //浏览器的版本号
var cookieEnabled = navigator.cookieEnabled; // 返回用户浏览器是否启用了cookie
var cpuClass = navigator.cpuClass; //返回用户计算机的cpu的型号,通常intel芯片返回"x86"(火狐没有) var mimeType = navigator.mimeTypes; // 浏览器支持的所有MIME类型的数组
var platform = navigator.platform; // 浏览器正在运行的操作系统平台,包括Win16(windows3.x)
// Win32(windows98,Me,NT,2000,xp),Mac68K(Macintosh 680x0)
// 和MacPPC(Macintosh PowerPC)
var plugins = navigator.plugins; // 安装在浏览器上的所有插件的数组
var userLanguage = navigator.userLanguage; // 用户在自己的操作系统上设置的语言(火狐没有)
var userAgent = navigator.userAgent; //包含以下属性中所有或一部分的字符串:appCodeName,appName,appVersion,language,platform
var systemLanguage = navigator.systemLanguage; // 用户操作系统支持的默认语言(火狐没有) //director var appCodeName = navigator.appCodeName; //与浏览器相关的内部代码名
var appMinorVersion = navigator.appMinorVersion; //辅版本号(通常应用于浏览器的补丁或服务包) var language = navigator.language; //浏览器支持的语言 (IE没有) var onLine = navigator.onLine; //返回浏览器是否处于在线模式(IE4以上版本) var opsProfile = navigator.opsProfile; // 未定义 (IE、火狐没有) var oscpu = navigator.oscpu; //浏览器正在运行的操作系统,其中可能有CPU的信息(IE没有) var product = navigator.product; // 浏览器的产品名(IE没有) var productSub = navigator.productSub; //关于浏览器更多信息(IE没有) var securityPolicy = navigator.securityPolicy; // 浏览器支持的加密类型(IE没有) var userProfile = navigator.userProfile; // 返回一个UserProfile对象,它存储用户的个人信息(火狐没有) var vender = navigator.vender; // 浏览器厂商名称(IE、火狐没有) var vendorSub = navigator.vendorSub; // 关于浏览器厂商更多的信息 var webkitPersistentStorage = navigator.webkitPersistentStorage; var info = "<table border=1>";
var type = "";
if (isIe()) {
type = "IE浏览器";
} else if (isFireFox()) {
type = "火狐浏览器";
}
info += "<tr><td>IE特有属性:</td><td>" + navigator.msManipulationViewsEnabled + "</td></tr>";
info += "<tr><td>浏览器类型:</td><td>" + type + "</td></tr>";
info += "<tr><td>weizhi :</td><td>" + webkitPersistentStorage + "</td></tr>";
info += "<tr><td>浏览器属性信息:</td><td>" + userAgent + "</td></tr>";
info += "<tr><td>浏览器的正式名称:</td><td>" + appName + "</td></tr>";
info += "<tr><td>浏览器的版本号:</td><td>" + appVersion + "</td></tr>";
info += "<tr><td>浏览器相关的内部代码名:</td><td>" + appCodeName + "</td></tr>";
info += "<tr><td>浏览器相关的辅代码号:</td><td>" + appMinorVersion + "</td></tr>";
info += "<tr><td>浏览器支持的语言IE没有):</td><td>" + language + "</td></tr>";
info += "<tr><td>浏览器是否处于在线模式:</td><td>" + onLine + "</td></tr>";
info += "<tr><td>浏览器的产品名(IE没有):</td><td>" + product + "</td></tr>";
info += "<tr><td>浏览器更多信息:</td><td>" + productSub + "</td></tr>";
info += "<tr><td>浏览器厂商名称:</td><td>" + vender + "</td></tr>";
info += "<tr><td>浏览器厂商更多信息:</td><td>" + vendorSub + "</td></tr>";
info += "<tr><td>浏览器的是否启用了cookie:</td><td>" + cookieEnabled + "</td></tr>";
info += "<tr><td>cpu等级:</td><td>" + cpuClass + "</td></tr>";
info += "<tr><td>浏览器的MIME类型:</td><td>" + mimeType.length + "</td></tr>";
info += "<tr><td>系统平台:</td><td>" + platform + "</td></tr>";
info += "<tr><td>安装的插件:</td><td>" + plugins + "</td></tr>";
info += "<tr><td>插件的数量:</td><td>" + plugins.length + "</td></tr>";
info += "<tr><td>插件的名称:</td><td>" + getPluginName() + "</td></tr>";
info += "<tr><td>用户设置的操作系统语言:</td><td>" + userLanguage + "</td></tr>";
info += "<tr><td>操作系统支持的默认语言:</td><td>" + systemLanguage + "</td></tr>";
info += "<tr><td>Director:</td><td>" + checkePlugs("Director") + "</td></tr>";
info += "<tr><td>javaEnabled:</td><td>" + navigator.javaEnabled() + "</td></tr>";
info += "<tr><td>是否有quickTime:</td><td>" + checkePlugs("QuickTime") + "</td></tr>";
info += "<tr><td>flash插件情况:</td><td>" + checkePlugs('Shockwave Flash') + "</td></tr>";
info += "<tr><td>是否有MediaPlayer:</td><td>" + checkePlugs("MediaPlayer") + "</td></tr>";
info += "<tr><td>是否有realPlayer:</td><td>" + checkePlugs("RealPlayer") + "</td></tr>";
info += "<tr><td>屏幕分辨率高度:</td><td>" + window.screen.height + "</td></tr>";
info += "<tr><td>屏幕分辨率宽度:</td><td>" + window.screen.width + "</td></tr>";
info += "<tr><td>颜色质量:</td><td>" + window.screen.colorDepth + "位</td></tr>";
info += "<tr><td>像素:</td><td>" + window.screen.deviceXDPI + "像素/英寸</td></tr>";
info += "<tr><td>字体是否平滑:</td><td>" + window.screen.fontSmoothingEnabled + "</td></tr>";
//info += "<tr><td>规定浏览器是否启用数据污点:</td><td>" + navigator.taintEnabled() + "</td></tr>";
info += "</table>";
document.getElementById("elInfo").innerHTML = info;
return info; }
//获取插件所有的名称
function getPluginName() {
var info = "";
var plugins = navigator.plugins;
if (plugins.length > 0) {
for (i = 0; i < navigator.plugins.length; i++) {
info += navigator.plugins[i].name + ";";
}
}
return info;
}
//检查是否安装了某插件,如果安装了返回版本号
function checkePlugs(pluginname) {
var f = "-"
var plugins = navigator.plugins;
if (plugins.length > 0) {
for (i = 0; i < navigator.plugins.length; i++) {
if (navigator.plugins[i].name.indexOf(pluginname) >= 0) {
f = navigator.plugins[i].description.split(pluginname)[1];
return f;
break;
}
}
}
return false;
}
//判断是否IE
function isIe() {
var i = navigator.userAgent.toLowerCase().indexOf("msie");
return i >= 0;
}
//判断是否firefox
function isFireFox() {
var i = navigator.userAgent.toLowerCase().indexOf("firefox");
return i >= 0;
} /******************************************以上为浏览器信息,以下为pc信息************************************************/
var locator = new ActiveXObject("WbemScripting.SWbemLocator");
var service = locator.ConnectServer("."); function cpuInfo() { //CPU 信息
var properties = service.ExecQuery("SELECT * FROM Win32_Processor");
var e = new Enumerator(properties);
var info = "<table border=1>";
info += "<tr bgcolor='#CDEDED' style='font-weight: bold;' ><td width='450' >CPU 信息</td></tr>";
for (; !e.atEnd(); e.moveNext()) {
var p = e.item();
info += "<tr style='color: red'><td >CPU序列号:" + p.ProcessorID + "</td></tr>";
info += "<tr><td >" + p.Caption + "</td></tr>";
info += "<tr><td >CPU编号:" + p.DeviceID + "</td></tr>";
info += "<tr><td >CPU型号:" + p.Name + "</td></tr>";
info += "<tr><td >CPU状态:" + p.CpuStatus + "</td></tr>";
info += "<tr><td >CPU可用性:" + p.Availability + "</td></tr>";
info += "<tr><td >CUP Level:" + p.Level + "</td></tr>";
info += "<tr><td >主机名称:" + p.SystemName + "</td></tr>";
info += "<tr><td >Processor Type:" + p.ProcessorType + "</td></tr>";
}
info += "</table>";
return info;
} function softDisk() { //软盘信息
var properties = service.ExecQuery("SELECT * FROM Win32_FloppyDrive");
var e = new Enumerator(properties);
var info = "<table border=1>";
info += "<tr bgcolor='#CDEDED' style='font-weight: bold;' ><td width='450'>软盘信息</td></tr>";
for (; !e.atEnd(); e.moveNext()) {
var p = e.item();
info += "<tr><td >" + p.Description + "</td></tr>";
info += "<tr><td >" + p.DeviceID + "</td></tr>";
info += "<tr><td >" + p.Status + "</td></tr>";
info += "<tr><td >" + p.Manufacuturer + "</td></tr>";
}
info += "</table>";
return info;
} function RomInfo() { //CD-ROM 信息
var properties = service.ExecQuery("SELECT * FROM Win32_CDROMDrive");
var e = new Enumerator(properties);
var info = "<table border=1>";
info += "<tr bgcolor='#CDEDED' style='font-weight: bold;'><td width='450' >CD-ROM 信息 </td></tr>";
for (; !e.atEnd(); e.moveNext()) {
var p = e.item();
info += "<tr><td >驱动器名称:" + p.Caption + "</td></tr>";
info += "<tr><td >描述:" + p.Description + "</td></tr>";
info += "<tr><td >盘符:" + p.Drive + "</td></tr>";
info += "<tr><td >驱动器状态:" + p.Status + "</td></tr>";
info += "<tr><td >是否在使用:" + p.MediaLoaded + "</td></tr>";
}
info += "</table>";
return info;
} function keyBoardInfo() { //键盘信息
var properties = service.ExecQuery("SELECT * FROM Win32_Keyboard");
var e = new Enumerator(properties);
var info = "<table border=1>";
info += "<tr bgcolor='#CDEDED' style='font-weight: bold;'><td width='450'>键盘信息 </td></tr>";
for (; !e.atEnd(); e.moveNext()) {
var p = e.item();
info += "<tr><td >键盘描述:" + p.Description + "</td></tr>";
info += "<tr><td >键盘名称:" + p.Name + "</td></tr>";
info += "<tr><td >键盘状态:" + p.Status + "</td></tr>";
}
info += "</table>";
return info;
} function mainBoard() { //主板信息
var properties = service.ExecQuery("SELECT * FROM Win32_BaseBoard");
var e = new Enumerator(properties);
var info = "<table border=1>";
info += "<tr bgcolor='#CDEDED' style='font-weight: bold;'><td width='450'>主板信息 </td></tr>";
for (; !e.atEnd(); e.moveNext()) {
var p = e.item();
info += "<tr style='color: red'><td >主板ID:" + p.SerialNumber + "</td></tr>";
info += "<tr><td >" + p.HostingBoard + "</td></tr>";
info += "<tr><td >制造商:" + p.Manufacturer + "</td></tr>";
info += "<tr><td >是否开启:" + p.PoweredOn + "</td></tr>";
info += "<tr><td >型号:" + p.Product + "</td></tr>";
info += "<tr><td >版本:" + p.Version + "</td></tr>";
}
info += "</table>";
return info;
} function disk() { //硬盘序列号 信息
var properties = service.ExecQuery("SELECT * FROM Win32_DiskDrive");
var e = new Enumerator(properties);
var info = "<table border=1>";
info += "<tr bgcolor='#CDEDED' style='font-weight: bold;' ><td width='450'>硬盘信息 </td></tr>";
for (; !e.atEnd(); e.moveNext()) {
var p = e.item();
info += "<tr style='color: red'><td >硬盘序列号:" + p.signature + "</td></tr>";
}
info += "</table>";
return info;
}
//获取Ram信息
function raminfo() {
var system = new Enumerator(service.ExecQuery("SELECT * FROM Win32_ComputerSystem")).item(); var physicMenCap = Math.ceil(system.TotalPhysicalMemory / 1024 / 1024);
//内存信息
var memory = new Enumerator(service.ExecQuery("SELECT * FROM Win32_PhysicalMemory"));
for (var mem = [], i = 0; !memory.atEnd(); memory.moveNext()) {
mem[i++] = {
cap: memory.item().Capacity / 1024 / 1024,
speed: memory.item().Speed
};
} var info = "<table border=1>";
info += "<tr bgcolor='#CDEDED' style='font-weight: bold;' ><td width='450'>内存信息 </td></tr>";
info += "<tr style='color: red'><td >内存总量:" + (mem[0].cap + mem[1].cap) + "M</td></tr>";
info += "<tr style='color: red'><td >可用物理内存:" + physicMenCap + "M</td></tr>";
info += "</table>";
return info;
} //获取网络连接信息
function ipinfo() { var properties = service.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE");
var e = new Enumerator(properties);
var info = "<table border=1>";
info += "<tr bgcolor='#CDEDED' style='font-weight: bold;' ><td width='450'>网络连接信息:</td></tr>";
var i = 1;
for (; !e.atEnd(); e.moveNext()) {
var p = e.item();
info += "<tr style='color: red'><td >MAC地址" + i + ":" + p.MACAddress + "</td></tr>";
info += "<tr style='color: red'><td >IP地址" + i + ":" + p.IPAddress(0) + "</td></tr>";
i++;
}
info += "</table>";
return info;
} function pcInfo() { //所有信息 var info = cpuInfo();
info += disk();
info += raminfo();
info += mainBoard();
info += ipinfo();
info += keyBoardInfo();
info += RomInfo();
info += softDisk(); document.getElementById('elInfo').innerHTML = info;
return info;
} /******************************************以上为pc信息************************************************/
</script> </head> <body> <INPUT id="Button1" type="button" value="浏览器所有信息" name="Button1" language=javascript onclick="allinfo()"> <INPUT id="Button1" type="button" value="客户端pc信息" name="Button1" language=javascript onclick="pcInfo()"> <div id="elInfo"> </div>
</body> </html>

嗯,就酱~~

js获取浏览器信息及版本(兼容IE)的更多相关文章

  1. js获取浏览器类型和版本信息

    bro () { let broName = 'Runing' let strStart = 0 let strStop = 0 let temp = '' let userAgent = windo ...

  2. js get browser vertion (js获取浏览器信息版本)

    1问题:js get browser vertion (js获取浏览器信息版本) 2解决方案 Copy this script into your JavaScript files. It works ...

  3. JS获取浏览器名和版本信息

    Navigator 对象包含有关浏览器的信息. Navigator 对象属性和方法: <html> <head> <title>JS完整获取浏览器信息</ti ...

  4. js获取浏览器信息

    function message() { txt = "<p>浏览器代码名: " + navigator.appCodeName + "</p>& ...

  5. JS获取浏览器信息及屏幕分辨率

    因为vue有自己的生命周期,初始化数据的时候,可以在钩子函数created()函数里初始化数据,也可以在mounted()函数里获取,但是两者是不同的,获取浏览器和屏幕分辨率的时候,不能在create ...

  6. JS判断浏览器类型与版本

    在JS中判断浏览器的类型,估计是每个编辑过页面的开发人员都遇到过的问题.在众多的浏览器产品中,IE.Firefox.Opera.Safari........众多品牌却标准不一,因此时常需要根据不同的浏 ...

  7. JS获取浏览器高度 并赋值给类

    在给网站做轮播焦点图的时候,如果需要全屏的话,可以用下面的jQuery来获取浏览器高度,然后赋值给类. $(window).load(function () { var maxHeight = 0; ...

  8. js获取浏览器版本信息整理

    一.Navigator 对象 JavaScript Navigator 对象包含了有关访问者浏览器的所有信息.接下来我们学习 Navigator 对象的两个属性. appName 保存浏览器类型 ap ...

  9. JS 获取浏览器和屏幕宽高等信息代码

    JS 获取浏览器和屏幕宽高等信息. 网页可见区域宽:document.body.clientWidth  网页可见区域高:document.body.clientHeight  网页可见区域宽:doc ...

随机推荐

  1. Qt之QThreadPool和QRunnable

    简述 QRunnable 是所有 runnable 对象的基类,而 QThreadPool 类用于管理 QThreads 集合. QRunnable 类是一个接口,用于表示一个任务或要执行的代码,需要 ...

  2. Lifecycle for overriding binding, validation, etc,易于同其它View框架(Tiles等)无缝集成,采用IOC便于测试。

    Lifecycle for overriding binding, validation, etc,易于同其它View框架(Tiles等)无缝集成,采用IOC便于测试. 它是一个典型的教科书式的mvc ...

  3. 多媒体开发之rtsp 实现rtsp over tcp/http/udp---rtsp发送

    (1) (2) (3) http://itindex.net/detail/51966-海康-rtsp-客户端 http://bbs.csdn.net/topics/390488547?page=1# ...

  4. 【BZOJ】1696: [Usaco2007 Feb]Building A New Barn新牛舍(贪心)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1696 原题要求min(sum{|x-xi|+|y-yi|}),且一定要看题:“没有两头牛的吃草位置是 ...

  5. 理解javascript函数调用和“this”

    http://blog.csdn.net/littlechang/article/details/8180550

  6. 去除 \ufeff

    语言:python 编程工具:pycharm 硬件环境:win10 64位 读取文件过程中发现一个问题:已有记事本文件(非空),转码 UTF-8,复制到pycharm中,在开始位置打印结果会出现  \ ...

  7. 数据驱动ddt

    在设计用例的时候,有些用例操作过程是一样的,只是参数数据输入的不同,如果用例重复的去写操作过程会增加代码量,对于这种多组数据的测试用例,可以使用数据驱动设计模式,一组数据对应一个测试用例,用例自动加载 ...

  8. WebApi 异常处理解决方案

    1.继承ExceptionFilterAttribute类,重写OnException方法 public class WebApiExceptionFilterAttribute : Exceptio ...

  9. ios开发--图文混排(富文本)

    最近准备接一个编辑类的app,所以就查了下相关的功能,并自己试验了下: /** iOS 6之前:CoreText,纯C语言,极其蛋疼 iOS 6开始:NSAttributedString,简单易用 i ...

  10. FAIL : SSHException: Incompatible ssh peer (no acceptable kex algorithm)问题解决及更新paromiko失败问题解决

    转自:http://blog.csdn.net/qy924565830/article/details/52164256 http://blog.csdn.net/coder_xia/article/ ...