我使用了正确的Google标记来启用跨域跟踪。通过单击提交按钮提交表单后,?ga=...
将被添加到目标URL,但是如果我通过JS触发了Submit事件,则不会将其添加。
代码如下:
<head>
<script>
//All other common JS code exist
gtag('set', 'linker', {
'domains': ['example.com'],
'decorate_forms': true
});
gtag('config', 'UA-...');
</script>
</head>
<body>
<form method="POST" action="https://example.com/a/b">
<button type="submit">Submit</button>
</form>
<button id="bt">Click to submit form using JS</button>
<script>
$(document).on('click', '#bt', function(e){
$('form').submit();
});
</script>
</body>
如果我在表单中添加提交按钮,然后直接单击它,则目的地将类似于https://example.com/a/b?_ga=...
。但是,当我通过JS提交表单时,目标网址就像没有GA附录的表单操作一样。
我必须注意,我使用的是gtag而不是GTM。
答案 0 :(得分:0)
可以通过两种不同的方式解决它:
方法1 我们可以将“提交”触发器更改为“提交”按钮上的单击触发器。不知道为什么,但是,它解决了这个问题:)
router.post('/update/:id', (req, res) => {
// Quotes.findOneAndUpdate({ name: req.body.name }, { $push: { quote: req.body.quote } });
Quotes.findById(req.params.id, function(err, quote) {
if (!quote) {
res.status(404).send('Data is not found');
} else {
quote.author = req.body.name;
quote.quotes = { $push: { quote: req.body.quote } };
quote.date_submitted = req.body.date_submitted;
quote
.save()
.then(quote => {
res.json('quote updated');
})
.catch(err => {
res.status(400).send('Update not possible' + ' ' + err);
});
}
});
});
方法2 除了提交以外,我们可以处理其他任何需要的事件,而不是单击事件。
$(document).on('click', '#bt', function(e){
$('form button[type="submit"]').trigger('click');
});
尽管问题似乎已解决,但主要问题仍然存在,并且似乎指向gtag或jquery $(document).on('submit', 'form', function(e){
//Do your stuff and handle the event
return true;
});
的潜在错误。因此,如果您可以为未解决的问题提供任何解决方案或答案,请继续发布您的帖子,我会以正确的答案来回答。