每日分享

一、判断浏览器类型

    /*
     * 描述:判断浏览器信息
     * 编写:LittleQiang_w
     * 日期:2016.1.5
     * 版本:V1.1
     */

    //判断当前浏览类型
    function BrowserType()
    {
        var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
        var isOpera = userAgent.indexOf("Opera") > -1; //判断是否Opera浏览器
        var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera; //判断是否IE浏览器
        var isEdge = userAgent.indexOf("Windows NT 6.1; Trident/7.0;") > -1 && !isIE; //判断是否IE的Edge浏览器
        var isFF = userAgent.indexOf("Firefox") > -1; //判断是否Firefox浏览器
        var isSafari = userAgent.indexOf("Safari") > -1 && userAgent.indexOf("Chrome") == -1; //判断是否Safari浏览器
        var isChrome = userAgent.indexOf("Chrome") > -1 && userAgent.indexOf("Safari") > -1; //判断Chrome浏览器

        if (isIE)
        {
             var reIE = new RegExp("MSIE (\\d+\\.\\d+);");
             reIE.test(userAgent);
             var fIEVersion = parseFloat(RegExp["$1"]);
             if(fIEVersion == 7)
             { return "IE7";}
             else if(fIEVersion == 8)
             { return "IE8";}
             else if(fIEVersion == 9)
             { return "IE9";}
             else if(fIEVersion == 10)
             { return "IE10";}
             else if(fIEVersion == 11)
             { return "IE11";}
             else
             { return "0"}//IE版本过低
         }//isIE end

         if (isFF) {  return "FF";}
         if (isOpera) {  return "Opera";}
         if (isSafari) {  return "Safari";}
         if (isChrome) { return "Chrome";}
         if (isEdge) { return "Edge";}
     }//myBrowser() end

     //判断是否是IE浏览器
     function isIE()
     {
        var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
        var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera; //判断是否IE浏览器
        if(isIE)
        {
            return "1";
        }
        else
        {
            return "-1";
        }
     }

     //判断是否是IE浏览器,包括Edge浏览器
     function IEVersion()
     {
        var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
        var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera; //判断是否IE浏览器
        var isEdge = userAgent.indexOf("Windows NT 6.1; Trident/7.0;") > -1 && !isIE; //判断是否IE的Edge浏览器
        if(isIE)
        {
             var reIE = new RegExp("MSIE (\\d+\\.\\d+);");
             reIE.test(userAgent);
             var fIEVersion = parseFloat(RegExp["$1"]);
             if(fIEVersion == 7)
             { return "IE7";}
             else if(fIEVersion == 8)
             { return "IE8";}
             else if(fIEVersion == 9)
             { return "IE9";}
             else if(fIEVersion == 10)
             { return "IE10";}
             else if(fIEVersion == 11)
             { return "IE11";}
             else
             { return "0"}//IE版本过低
        }
        else if(isEdge)
        {
            return "Edge";
        }
        else
        {
            return "-1";//非IE
        }
     }

audio和vidio的进度条

HTML 5 <audio> 标签

属性

属性 描述
autoplay autoplay 如果出现该属性,则音频在就绪后马上播放。
controls controls 如果出现该属性,则向用户显示控件,比如播放按钮。
loop loop 如果出现该属性,则每当音频结束时重新开始播放。
preload preload
如果出现该属性,则音频在页面加载时进行加载,并预备播放。

如果使用 "autoplay",则忽略该属性。

src url 要播放的音频的 URL。

实例

带有浏览器默认控件的 audio 元素:

<audio controls="controls">
  <source src="song.ogg" type="audio/ogg" />
  <source src="song.mp3" type="audio/mpeg" />
Your browser does not support the audio element.
</audio>

HTML 5 <video> 标签

定义和用法

<video> 标签定义视频,比如电影片段或其他视频流。

属性

属性 描述
autoplay autoplay 如果出现该属性,则视频在就绪后马上播放。
controls controls 如果出现该属性,则向用户显示控件,比如播放按钮。
height pixels 设置视频播放器的高度。
loop loop 如果出现该属性,则当媒介文件完成播放后再次开始播放。
preload preload
如果出现该属性,则视频在页面加载时进行加载,并预备播放。

如果使用 "autoplay",则忽略该属性。

src url 要播放的视频的 URL。
width pixels 设置视频播放器的宽度。

实例

一段简单的 HTML5 视频:

<video src="movie.ogg" controls="controls">
您的浏览器不支持 video 标签。
</video>

HTML Audio/Video DOM timeupdate 事件

定义和用法

timeupdate 事件在音频/视频(audio/video)的播放位置发生改变时触发。

该事件可以在以下情况被调用:

  • 播放音频/视频(audio/video)
  • 移动音频/视频(audio/video)播放位置(即播放时刻点被改变,例如拖动了播放进度条)

提示: timeupdate 事件通常与 Audio/Video 对象的 currentTime 属性一起使用,该属性返回音频/视频(audio/video)的播放位置(以秒计)。

语法

HTML 中:

<audio|video ontimeupdate="myScript">尝试一下

JavaScript 中:

audio|video.ontimeupdate=function(){myScript};尝试一下

javascript 中, 使用 addEventListener() 方法:

audio|video.addEventListener("timeupdate", myScript);尝试一下

注意: Internet Explorer 8 及更早 IE 版本不支持 addEventListener() 方法。

当视频播放位置已经改变,显示视频当前播放位置(一秒计):

<body>  

<p>该实例中,我们使用了 HTML DOM 为 video 元素添加 "ontimeupdate" 事件。  

在用户开始播放视频,或者移动视频的播放位置时触发函数,并显示视频的播放位置。</p>  

<video id="myVideo" width="320" height="176" controls>  

<source src="mov_bbb.mp4" type="video/mp4">  

<source src="mov_bbb.ogg" type="video/ogg">  

  您的浏览器不支持 HTML5 video 标签。  

</video>  

<p>播放位置: <span id="demo"></span></p>  

<script>  

// 获取 id="myVideo" 的 video 元素  

var vid = document.getElementById("myVideo");  

// 为 video 元素添加 ontimeupdate 事件,如果当前播放位置改变则执行函数    

vid.ontimeupdate = function() {myFunction()};  

function myFunction() {  

    // 显示 id="demo" 的 p 元素中视频的播放位置   

    document.getElementById("demo").innerHTML = vid.currentTime;  

}  

</script>  

</body>

HTML 5 Audio/Video DOM play() 方法

定义和用法

play() 方法开始播放当前的音频或视频。

HTML 5 Audio/Video DOM pause() 方法

定义和用法

pause() 方法停止(暂停)当前播放的音频或视频。

带有播放和暂停按钮的一段视频:

<body>  

<button onclick="playVid()" type="button">播放视频</button>  

<button onclick="pauseVid()" type="button">暂停视频</button>  

<br />  

<br />  

<video id="video1">  

<source src="/example/html5/mov_bbb.mp4" type="video/mp4">  

<source src="/example/html5/mov_bbb.ogg" type="video/ogg">  

  Your browser does not support HTML5 video.  

</video>  

<script>  

var myVideo=document.getElementById("video1");  

function playVid()  

  {  

  myVideo.play();  

  }  

function pauseVid()  

  {  

  myVideo.pause();  

  }  

</script>  

</body>  

三、在1024*768或者800*600的分辨率下可以自动调整成适用于该客户端分辨率的大小。

  第一种方法:做一个网页解决问题(长了点)

  如果只是因为浏览者改变了浏览器的设置,或者因为浏览器不兼容,使自己精心制作的网页变得"面目全非",那多令人沮丧!下面我们以网页爱好者的常用工具Dreamweaver(以下简称DW)为例,列出几个网页制作初学者较常见的网页布局问题以及解决方法,希望对初学者们有所帮助。

  一、消除任意缩放浏览器窗口对网页的影响

  一番辛苦做出来的网页,在全屏状态下浏览一切正常。但在改变浏览窗口大小之后,网页就变得"不堪入目"了,这是个很值得注意的问题。

  问题的根源还得从网页的布局说起,在DW中,网页内容的定位一般是通过表格来实现的,解决表格的问题也就成功了大半。

  大家应该注意到,在DW中表格属性面板的高宽设定选择上提供了两种不同类型:百分比和像素值。百分比的使用将会产生前面说到的那个毛病。这里所说的百分比是指表格的高或宽设置为上层标记所占区域高或宽的百分比,如在一个表格单元的宽度是600,在它里面嵌入了另外一个表格,表格宽度占表格单元的50%,则这个表格的宽度为300,依此类推,如果在一个表格不是嵌于另一个表格单元中,则其百分比是相对于当时窗口的宽度的。IE浏览器中,随便改动主页窗口的大小时,表格的内容也随之错位、变形,就是因为表格的百分比也要随着窗口的大小而改变成相应的百分比宽度。

  自然,解决这个问题的办法就是将表格宽度设置成固定宽度(也就是像素值)。另外如果外层表格已做好固定宽度设置,内层表格也可以适当使用百分比设置。清楚这个原则以后,如果出现类似的问题大家也知道怎么解决。

  二、让网页居中

  说到了窗口大小就会顺着路子想到分辨率的问题,在800×600分辨率下制作的网页在1024×768分辨率的机器上打开,整个网页就会跑到左边;1024×768分辨率的网页在800×600分辨率的机器上有时也会变得"不堪入目"。两种分辨率各做一个吧?做起来费时,看起来也费劲。怎么办呢?

  现在大多数网民都还在用800*600的分辨率,所以我们一般可以以此分辨率为主,要想让网页在1024*768时居中,只要在网页原代码的<body>后紧加一句<center>,</body>前加一句</center>就OK了。不过有几个问题这是要注意一下,第一个就是上面说到的百分比的问题,表格、单元格的宽度单位最好要使用像素单位,而不要用百分比。例如width=770。如果你的表格宽度设的是百分比,那么使用大于800×600的像素时,网页就会拉宽,这样网页可能会变形。在<body>中加入leftmargin=0,即<body leftmargin=0>这种情况下,800×600支持的表格宽度为780像素时不会出现滚动条。还有一点要注意的是不能用DW中的层来定位。

  <html> 
  <head></head> 
  <body topmargin=0 leftmargin=0> 
  <center> 
    <table cellspacing cellpadding width=760><tr><td></td></tr></table> 
  </center> 
  </body> 
  </html>

 三、定义固定大小的文字

  大家都知道,在IE浏览器的功能设置中,有一个可以自由设置窗口内容字体大小的功能,这样由于不同访问者的设置习惯不同,呈现在他们面前的网页有时也会不不相同。比如你可能本来设计时用的是2号字体,结果由于用户对浏览器的额外设定,变的更大了,这时你的网页也可能变得"不堪入目"。虽然不是你的错,但客户是上帝。

  如果使用了网页中的CSS样式表技术,就不会出现上述情况了。使用快捷键"Shift+F11"打开样式表"CSS style"编辑器,在窗口中单击鼠标右键执行"New CSS style..."命令新建一个样式表,然后在给出的列表中选择"类型"选项,定义文字属性参数(一般文字的大小选择12px较为适宜)。完成后选择网页编辑窗中的文本,单击新的样式表名称,可以看到选中的文本发生了变化。预览时试试定义的文本字体尺寸还会不会随浏览器的选择字体大小而改变。

  四、让网页适应不同的浏览器

  浏览器的格局现在是两分天下,一分是IE,另一分是NetScape,在国内Ie有绝对的占有率,在这种情况下我们设计的网页只要兼容它就行了,但NetScape在国外还是有很多人使用,毕竟它是浏览器的元老。

  虽然没有办法做出让所有浏览器都兼容的网站,但只要注意以下几点,做出来的网页在各个浏览器都中能达到比较好的显示效果:

  不要混合使用层和表格排版,如果是父子关系,如层中表格,不在此原则范围内。

  内联式的 CSS 在 Netscape Navigator 中经常会出现问题,使用链式或内嵌式。

  有时需要在空层插入表格或者透明图片,以保证在 Netscape Navigator 里的效果。

  对于只有几个像素宽度或高度的层,改用图片来实现。

  避免使用 W3C 组织不推荐的排版属性,用 CSS 代替。

  第二种方法:做两个适合不同分辨率的页面,一个是800×600,一个是1024×768,在800×600的页面中加入一下代码就可以实现跳转了:
 
  解决分辨率问题在Dreamweaver中没有此项功能,我们只能手动加入一段JavaScript代码。首先在change-ie.html或change-nc.html页面代码中的< head>和< /head>中加入以下代码:

   < script language=javascript
   < !-- 
   function redirectPage(){ 
   var url800x600=〃index-ie.html〃; //定义两个页面,此处假设index-ex.html和1024-ie.html同change-ie.html在同一个目录下 
   var url1024x768=〃1024-ie.html〃; 
   if ((screen.width==800) && (screen.height==600)) //在此处添加screen.width、screen.height的值可以检测更多的分辨率 
   window.location.href= url800x600; 
   else if ((screen.width==1024) && (screen.height==768)) 
   window.location.href=url1024x768; 
   else window.location.href=url800x600; 
   } 
   // --> 
   < /script>

   然后再在< body…>内加入onLoad=〃redirectPage()〃

   最后,同样地,在< body>和< /body>之间加入以下代码来显示网页的工作信息:

   < script language=JavaScript> 
   < !-- 
   var w=screen.width 
   var h=screen.height 
   document.write(〃系统已检测到您的分辨率为:〃); 
   document.write(〃< font size=3 color=red>〃); 
   document.write(w+〃×〃+h); 
   document.write(〃< /font>〃); 
   document.write(〃正在进入页面转换,请稍候…〃); 
   // --> 
   < /script>

判断读者浏览器类型和屏幕分辨率,自动调用不同CSS

我们在设计网页的时候一个比较头痛的问题是究竟我们的浏览者的分辨率是多少?如果使我们的浏览者能够更好的去浏览到我的网页,这个是我们设计前必须思考的问题。所以Leying在设计网页的时候第一个想的是兼容现在大多数浏览者的屏幕分辨率,这里头有几种最常用的方法:

1、硬行把网页先用表格框起来,框的分辨率应该是在760-780象素,其余的空间可以给一个背景图或者空白.
    2、用自动缩放的方法也可以实现,这种方法比较古老,而且很简单,这个不多说了;

3、用自动判断的方法。

今天,就第三种方法来说说,如何来判断出浏览者的屏幕分辨率,根据不同的分辨率给予读者不同的浏览内容:

网络上也有一些能自动判断出你的浏览器是什么类型或者什么版本的代码,集成过来。

一、既判断分辨率,也判断浏览器,使之成为判断浏览器类型屏幕分辨率自动调用不同CSS的代码。

<SCRIPT LANGUAGE="JavaScript">
<!--
if (window.navigator.userAgent.indexOf("MSIE")>=1)
{
var IE1024="";
var IE800="";
var IE1152="";
var IEother="";

ScreenWidth(IE1024,IE800,IE1152,IEother)
}else{
if (window.navigator.userAgent.indexOf("Firefox")>=1)
{
//如果浏览器为Firefox
var Firefox1024="";
var Firefox800="";
var Firefox1152="";
var Firefoxother="";

ScreenWidth(Firefox1024,Firefox800,Firefox1152,Firefoxother)
}else{
//如果浏览器为其他
var Other1024="";
var Other800="";
var Other1152="";
var Otherother="";
ScreenWidth(Other1024,Other800,Other1152,Otherother)
}
}

function ScreenWidth(CSS1,CSS2,CSS3,CSS4){
if ((screen.width == 1024) && (screen.height == 768)){
setActiveStyleSheet(CSS1);
}else{
if ((screen.width == 800) && (screen.height == 600)){
setActiveStyleSheet(CSS2);
}else{
if ((screen.width == 1152) && (screen.height == 864)){
setActiveStyleSheet(CSS3);
}else{
setActiveStyleSheet(CSS4);
}}}
}

function setActiveStyleSheet(title){ 
  document.getElementsByTagName("link")[0].href="style/"+title; 
}
//-->
</SCRIPT>

为了大家明白,这里简单解析一下:

 引用内容

var IE1024="";

var IE800="";

var IE1152="";

var IEother="";

引号里面分别填写,用户使用IE的时候并且分辨率为1024*768,800*600,1152*864要使用的css文件名。

var Firefox1024="";

var Firefox800="";

var Firefox1152="";

var Firefoxother="";

引号里面分别填写,用户使用FireFox(一个也很流行的浏览器)的时候并且分辨率为1024*768,800*600,1152*864要使用的css文件名。

var Other1024="";

var Other800="";

var Other1152="";

var Otherother="";

引号里面分别填写,用户使用其他浏览器的时候并且分辨率为1024*768,800*600,1152*864要使用的css文件名。

二、不判断分辨率,只判断浏览器实现根据浏览器类型自动调用不同CSS。

<SCRIPT LANGUAGE="JavaScript">
<!--
if (window.navigator.userAgent.indexOf("MSIE")>=1)
{
//如果浏览器为IE
setActiveStyleSheet("default.css");
}else{
if (window.navigator.userAgent.indexOf("Firefox")>=1)
{
//如果浏览器为Firefox
setActiveStyleSheet("default2.css");
}else{
//如果浏览器为其他
setActiveStyleSheet("newsky.css");
}
}

function setActiveStyleSheet(title){ 
  document.getElementsByTagName("link")[0].href="style/"+title; 
}
//-->
</SCRIPT>

解释:(和前面的差不多)

如果浏览器为IE,则调用default.css

如果浏览器为Firefox,则调用default2.css

如果浏览器为其他,则调用newsky.css

使用方法:

很简单,放在 “</head>” 前面即可。

页面在不同屏幕分辨率下存在的问题及解决办法

(未考虑800*600或更低分辨率的情况)

一 问题

在不同分辨率下,页面布局存在不同程度的差异,特别是页面上的表单控件,其宽度默认是固定值“width:150px”,当分辨率较高时,表格中的空白显得过多,页面布局显得很不协调,在宽屏显示器上尤为明显。

二 解决办法

方法1. 为不同分辨率单独做样式文件,在页面头部用js判断分辨率后动态加载定义好的样式文件。样式文件命名格式如:forms[_屏幕宽度].css,样式文件中只需重新定义文本框和下拉框的宽度即可。

在包含的头文件headr.inc中加入js代码:

if(screen.width > 1024){

document.write(‘<link rel="stylesheet" type="text/css" href="${path}/nrmus/etc/css/forms_‘+ screen.width +‘.css">‘);

}

forms_1280.css文件内容:

/* 分辨率宽度为1280的时候,文本框和下拉框的宽度属性(width)单独定义

* 参考计算方法为:(分辨率宽度-174)/4 * 0.7

* 左侧菜单栏宽度为174px;右侧页面表格是4列;控件宽度为单元格的70%

* (1280-174)/4*0.7 = 193

*/

input.text

{

background:#FFFFFF;

border:1px solid #B5B8C8;

padding:3px 3px;

height:22px;

line-height:18px;

vertical-align:middle;

padding-bottom:0pt;

padding-top:2px;

width: 193px;

color: #333;

}

select.select{

width: 193px;

}

优点:实现很简单,代码量少;并且可针对不同分辨率做更细粒度的页面控制。

缺点:无明显缺点。

方法2 将整个页面的宽度设置为固定值,并使其居中显示。

优点:可以很大程度的消除不同分辨率下的显示差异。

缺点:分辨率宽度大于这个固定值的时候,页面两边会出现空白。

方法3 用js判断分辨率,修改body的zoom属性(IE特性),即可实现对整个页面进行缩放,类似IE8或其它浏览器提供的缩放功能。

优点:实现简单,页面能进行缩放。

缺点:缩放是宽度和高度的等比缩放,高分辨率下字体、图片看起来会变小,问题解决的不彻底。

时间: 2024-10-07 07:16:40

每日分享的相关文章

每日分享0808

科研领域: 1.X-MOL资讯 ①神威E级超算原型机完成重大任务,核心器件全部国产 ②我国加快临床急需的新药好药上市 ③中国航天面向全球征集空间站实验项目 ④川北医学院与暨南大学签约共建临床医学博士研究生联合培养基地 ⑤天津大学杰伊?西格尔教授当选美国化学会会士 ⑥ 辉瑞乳腺癌治疗突破性创新药爱博新在中国获批 1 http://m.x-mol.com/news/13710?from=singlemessage 工具箱: 1.XRD数据分析之物相鉴定及晶粒尺寸计算 1大专栏  每日分享0808r>

每日分享!介绍Css 盒模型!

如何定义盒模型: 在CSS盒子模型理论中,页面中所有的元素都是看成一个盒子,并且还占据一定的空间. 一个页面是由很多这样的盒子组成的.这些盒子之间都会相会影响,因此我们掌握CSS盒模型相当重要.需要理解盒模型,我们需要从两个方面去考虑:一.理解一个单独盒子的内部结构,二是理解多个盒子之间的相互关系! 盒子的组成:盒子是由(content(内容) + padding(内边距)+ border(边框) + margin(外边距) ) 四个属性组成.此外,在盒子模型中,还有width(宽度)和 hei

每日分享!~ 使用js原生方式对拖拉元素(鼠标的事件)

一个元素放置页面上.如何进行拖拉,实现想放哪里就放哪里的效果呢? 效果如下: 如果让你写这个效果,你会如何写呢? --- 思路分析:我首先想到的是,对这个元素先绑定一个事件.(什么事件? 那当然是鼠标按下时的事件啦? )   那么绑定这个事件具体做啥子呢? 在绑定这个事件之前.我们需要先了解如下几个事情-- 1. 元素如何才能在页面上移动?  (是不是要脱离文档流呢? OK / 这时我们给设置一个position:absolute /  让其绝对定位. 2. 获取元素当前距离页面两边的位置 3.

每日分享!~ 如何解决获取卷曲高度的问题,document.body.scrollTop为什么在pc端拿不到值

document.scrollingElement.scrollTop 时间挺快的- 又是四月的最后一天了!好了进入今天的正题了.你在做项目的时候,经常会不会搞混document.documentElement.scrollTop,和document.body.scrollTop呢? 在以前我也是经常搞混,为什么我监听了scroll是正确的? 比如我在pc 端使用了document.body.scrollTop去获取当前的窗口的高度,始终是0,正在着急为什么是0??? 到底哪里错了.找了半天可能

分针网——每日分享:10个程序员常用的代码简写技术

更多文章:www.f-z.cn 今天小编我给大家整理了一份10个程序员常用的代码简写技术,看懂一种是入门,全懂就是大神,你能知道几个呢? 1.三元操作符 当想写if...else语句时,使用三元操作符来代替. const x = 20;let answer;if (x > 10) { 简写: const answer = x > 10 ? 'is greater' : 'is lesser'; 也可以嵌套if语句: const big = x > 10 ? " greater

分针网—每日分享:mongoose对查询结果进行排序

http://www.fenzhen.cc/id/177 前面的学习已经可以刷出数据了,不过通过循环取出来后,发现并不是按照想象中的按先后顺序列出来的,而是按照数据在数据库中存放的顺序刷出来的. 如图,MongoDB存储数据并没有按照我添加数据的先后顺序,而是按照了author这个字段来的,因此前台刷出的数据也是安装author来的. 那么如何让前台通过时间来排序呢? 解决方法如下: MyModel.find(condition, fields, {sort: [['_id', -1]]}, c

分针网—每日分享:H5 页面高级字体应用实践

前端开发 背景 最近在开发一个 H5 活动页快速搭建平台,可以通过拖拽编辑图片,文字等元素组件,快速搭建出一个移动端的活动页面,基本交互和成品效果类似 PPT 软件.这类活动大量在微信等平台上传播,其中会包含各种动画和特效,而各类高级艺术字体(如:方正兰亭黑,方正彩云,方正大草,方正剑体等)的应用也非常广泛. 之前用户只能通过 ps 等软件将文字转化为图片再贴到平台上使用.使用成本很高,修改,调试都非常不便,而且图片占用的资源也比较多,为了降低用户的使用成本,基于一站式搭建的理念,我们需要将高级

【每日分享】关于漏测

漏测率 每次漏测的点是不一样的,相同的问题不会出现第二次 测试是质量管理的一个小环节,所有的质量都是构建出来的,而不是测试出来的 如何减少漏测:通过团队构建更好的产品质量(测试比例:google 10:1  facebook 0 测试分3层,单元测试是必不可少的质量管理的环节,收益最大,保证了最底层代码的健壮性 单元测试:在核心环节加上单元测试,在企业中推进适量的单元测试 接口层, UI层.在敏捷开发中,ui自动化是很重要的一个环节.很探索性测试,google,jim 提高 如何避免 1.梳理好

分针网——每日分享:nodejs导出excel实战

本文转载:http://www.f-z.cn/id/268 我们都知道nodejs的内存由于v8内存分配机制的原因十分有限 64位系统也只能占1.4G左右, 因此当我们要生成或者读取大文件的时候内存的吃紧会给我们造成极大的困扰, 遇到这样的情况Node给了我们一个很好的解决方法 stream 简单的了解一下流 流是数据的集合 -- 就像数组或字符串一样.区别在于流中的数据可能不会立刻就全部可用,并且你无需一次性地把这些数据全部放入内存.这使得流在操作大量数据或是数据从外部来源逐段发送过来的时候变