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+ phantomjsPhantomJS是一个基于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 里面。