js 下载视频流 内存溢出

JavaScript07

js 下载视频流 内存溢出,第1张

在IE下的JS编程中,以下的编程方式都会造成即使关闭IE也无法释放内存的问题,下面分类给出

1、给DOM对象添加的属性是一个对象的引用。

范例:

var MyObject = {}

document.getElementById('myDiv').myProp = MyObject

解决方法:

在window.onunload事件中写上: document.getElementById('myDiv').myProp = null

2、DOM对象与JS对象相互引用。

范例:

function Encapsulator(element) {undefined

this.elementReference = element

element.myProp = this

}

new Encapsulator(document.getElementById('myDiv'))

解决方法:

在onunload事件中写上: document.getElementById('myDiv').myProp = null

3、给DOM对象用attachEvent绑定事件。

范例:

function doClick() {}

element.attachEvent("onclick", doClick)

解决方法:

在onunload事件中写上: element.detachEvent('onclick', doClick)

4、从外到内执行appendChild。这时即使调用removeChild也无法释放。范例:

var parentDiv = document.createElement("div")

var childDiv = document.createElement("div")

document.body.appendChild(parentDiv)

parentDiv.appendChild(childDiv)

解决方法:

从内到外执行appendChild:

var parentDiv = document.createElement("div")

var childDiv = document.createElement("div")

parentDiv.appendChild(childDiv)

document.body.appendChild(parentDiv)

5、反复重写同一个属性会造成内存大量占用(但关闭IE后内存会被释放)。

范例:

for(i = 0i hostElement.text = "asdfasdfasdf"

}

这种方式相当于定义了5000个属性!

可以使用selenium+ phantomjs

PhantomJS是一个基于webkit的JavaScript API。它使用QtWebKit作为它核心浏览器的功能,使用webkit来编译解释执行JavaScript代码。任何你可以在基于webkit浏览器做的事情,它都能做到。它不仅是个隐形的浏览器,提供了诸如CSS选择器、支持Web标准、DOM操作、JSON、HTML5、Canvas、SVG等,同时也提供了处理文件I/O的操作,从而使你可以向操作系统读写文件等。PhantomJS的用处可谓非常广泛,诸如前端无界面自动化测试(需要结合Jasmin)、网络监测、网页截屏等。

关于中国保监会关于印发 《保险销售行为可回溯管理暂行办法》 的通知,公司要做投保流程的回溯功能,白话就是记录用户在购买保险流程的全部操作记录,通过截图或录屏的形式,如果用传统的方式,工作量将不可想象。

偶然发现这款前端神器工具,首先关于rrweb:

尊重成果,前人铺路:

点击开始时,打开console,可以看到打印的每次记录的DOM数据

password类型的输入框在回放中,不显示,小黑点也不显示。

回放是以Iframe镶嵌其中。

录制和回放可以分开,如果作为监控功能,在WEB中把录制嵌入,数据传入后台保存,以后再导出数据进行回放。

IE好像有兼容问题,还没来得及试。

录制动画也没问题,项目中使用了可以。

回放的css文件里面看了下是针对鼠标样式,回放的Iframe样式有点偏差,样式应该是写在 rrweb-index.js 里面。