我正在尝试存储用户在意外退出页面之前所关注的最后一页和最后一个表单字段(没有单击“继续”),但我的解决方案无效。 我在页面上使用onbeforeunload事件,我完全意识到这个事件在所有浏览器中都不能保持一致,但我无法用另一种方式找到解决方法。
window.onbeforeunload = function () {
if (fieldName != null && fieldName.length > 0) {
var formName = location.pathname.substring(1);
if (typeof (TrackFormField) == 'function') {
try {
TrackFormField(formName, fieldName);
}
catch (err) {
}
}
}
};
TrackFormField是一个单独的文件中的函数,只是将值赋给属性
function TrackFormField(formName, fieldName) {
if (formName) {
s.prop23 = formName + ":" + fieldName;
}
sendOmniture();
}
sendOmniture执行以下操作:
function sendOmniture() {
var s_code = s.t(); if (s_code) document.write(s_code)
}
奇怪的是,它有时会起作用,但通常我在分析调试器和Fiddler中都看不到prop23。
经过一些调试后,我发现s_code由于某种原因在send omniture函数中未定义。 我该怎么做才能解决这个问题?
答案 0 :(得分:0)
我的猜测是window.onbeforeunload事件会在大多数情况下杀死(s)对象,然后才有机会执行。
使用Adobe DTM的直接调用规则会在焦点更改时激活您的功能怎么样?这样您就不需要将任何操作绑定到onbeforeunload事件。
希望这有帮助。