(function() {
//假设表单的ID为commentform
var form = document.querySelector(‘#commentform’);
var fields = {};
//当焦点进入控件时获取时间
var enterField = function(name) {
fields[name] = new Date().getTime();
}
//当焦点离开控件时获取时间并将结果推送到数据层
var leaveField = function(e) {
var timeSpent;
var fieldName = e.target.name;
var leaveType = e.type;
if (fields.hasOwnProperty(fieldName)) {
timeSpent = new Date().getTime() – fields[fieldName];
//这里我们也可以调整到大于10,因为有些时候我们快速按Tab会产生不必要的数据。
if (timeSpent > 0 && timeSpent < 1800000) {
window.dataLayer.push({
‘event’ : ‘fieldTiming’,
‘timingCategory’ : ‘评论表单项填写耗时’,
‘timingVariable’ : fieldName,
‘timingLabel’ : leaveType,
‘timingValue’ : timeSpent
});
}
delete fields[fieldName];
}
}
if (form) {
//建立监听器,三者分别为,进入焦点,未更改离开焦点,更改后离开焦点
form.addEventListener(‘focus’, function(e) { enterField(e.target.name); }, true);
form.addEventListener(‘blur’, function(e) { leaveField(e); }, true);
form.addEventListener(‘change’, function(e) { leaveField(e); }, true);
}
})();
本文来自 SEM优化网 www.semyouhua.com