重新触发Javascript事件是否安全
Is it safe to re-trigger a Javascript event?
我正在使用Google Analytics,希望跟踪某些表单上的表单提交。我想确保在表单提交之前完成对Analytics的调用,否则Analytics可能不会注册事件。我的应用程序已经有一堆提交时发生的代码(可能通过ajax提交表单,在popover中打开结果,等等)。
我的计划是收听表单上的submit
事件,通过分析跟踪提交(如果表单具有正确的类),然后重新编写原始事件以继续进行正常的表单处理。这是第一个必须提交的侦听器,所以它应该在其他侦听器之前启动。这样做有效吗?这样做安全吗?
这是我的代码:
$('form').on('submit', function(event) {
var form = $(this);
if (form.hasClass('ga-event') && !event._ga_event_sent)
{
ga('send', {
hitType: 'event',
eventCategory: form.data('category'),
eventAction: form.data('action'),
eventLabel: form.data('label'),
hitCallback: function() { // analytics calls this when its done
event._ga_event_sent = true;
form.trigger(event);
}
});
return false;
}
// do other onSubmit stuff here
});
重新触发JavaScript事件是否安全?
在这种情况下,没有。您触发了与您侦听的事件相同的事件,导致无限循环
更新#1:
来自@lyoshenka的评论:
我想重新启动jquery事件的原因是,我想在表单提交时做其他事情(如有必要,确认提交,通过ajax提交等),这些事情仍然需要在表单实际提交之前,但在GA事件记录之后进行。
感谢您提供最新信息。你的问题不清楚这一点。
假设您的基本工作流程是:
- 向Google Analytics发送请求
- 更多验证+AJAX
- 提交表单
我建议只使用一个submit
事件处理程序来处理这三件事。根本问题是,您有这三个主要的代码片段,它们需要按照特定的顺序运行,但它们并不了解彼此。相反,将该逻辑整合到一个submit
事件处理程序中,使您能够细粒度地控制如何完成这些事情——尤其是因为您需要执行多个异步操作。
$('form').on('submit', function(event) {
event.preventDefault();
var form = $(this);
var otherSubmitActions = function() {
// Do other validations, AJAX, etc.
// Then in the final callback for your AJAX:
// form[0].submit();
};
if (form.hasClass('ga-event')) {
ga('send', {
hitType: 'event',
eventCategory: form.data('category'),
eventAction: form.data('action'),
eventLabel: form.data('label'),
hitCallback: otherSubmitActions // analytics calls this when its done
});
} else {
otherSubmitActions();
}
});
相关文章:
- 当eval只执行服务器端数据时,在javascript中使用eval是否安全
- 假设浏览器渲染为60 fps是否安全
- 如果条件将长 JavaScript 拆分为多行是否安全
- 如何检测在 Javascript 中使用“in”运算符是否安全
- 为用户应用程序托管 javascript 文件是否安全
- 使用AngularJS是否安全
- 在JavaScript源代码中使用UTF-8字符文字是否安全
- 每隔1秒调用一次jQueryajax是否安全
- 使用Ajax提交表单是否安全
- 重新触发Javascript事件是否安全
- 使用for.of迭代时删除集合中的元素是否安全
- jQuery(userInput)对最终用户来说是否“安全”
- JavaScript 在表单中注入密码是否安全
- 如果没有其他用户会看到未转义的用户输入,渲染它是否安全
- 是否安全应用是最佳实践
- 使用 Restangular 使用 RESTful API - RESTful API 将数组作为顶级对象返回是否安全
- 网络套接字是否安全
- 在循环时修改数组是否安全
- HTML 文本框值属性是否安全免受 XSS 攻击
- 在 JavaScript 中依赖全局本机对象是否安全,尤其是 Object 对象