0

我有一个设置为收集 utm 数据的 salesforce web-to-lead 表单,它确实......如果我不离开该页面。

目前,我没有使用 sf web 来引导表单。如果用户通过广告访问网站,则 utm 参数存储在 cookie 中,并在用户填写表单时使用。它完美地工作。

我现在需要使用 sf web 来引导表单。如果我直接登陆页面,再也不离开,那么url中的utm参数就成功收集到了form中。如果我离开页面并返回表单页面,我可以看到cookie中存储的utm参数,但表单没有收集。

请发送帮助!!!!我需要能够离开页面并使用存储的 cookie 来填充 utm 隐藏表单字段。

<form id="salesforceForm" method="POST" action="https://webto.salesforce.com/servlet/servlet.WebToLead?encoding=UTF-8">
<input name="oid" type="hidden" value="mySFID#"> 
<input name="retURL" type="hidden" value="myredirectlink.com"> 
<label for="first_name">First Name*</label> <input id="first_name" maxlength="40" name="first_name" required="" size="20" type="text"> 
<label for="last_name">Last Name*</label> <input id="last_name" maxlength="80" name="last_name" required="" size="20" type="text"> 
<label for="email">Email*</label> <input id="email" maxlength="80" name="email" required="" size="20" type="text"> 
<label for="company">Company*</label> <input id="company" maxlength="40" name="company" required="" size="20" type="text"> <label for="phone">Phone*</label> <input id="phone" maxlength="40" name="phone" required="" size="20" type="text"> 
<input id="utm_source" name="00N50000003KWmr" type="hidden" value=""> 
<input id="utm_medium" name="00N50000003KWn6" type="hidden" value=""> 
<input id="utm_campaign" name="00N50000003KWnB" type="hidden" value=""> 
<input id="utm_term" name="00N50000003KWnG" type="hidden" value=""> 
<input id="utm_content" name="00N50000003KWnL" type="hidden" value=""> 
<input name="btnSubmit" type="submit">
</form>


<script type="text/javascript">
function parseGET(param) {
    var searchStr = document.location.search;
    try {
        var match = searchStr.match('[?&]' + param + '=([^&]+)');
        if (match) {
            var result = match[1];
            result = result.replace(/\+/g, '%20');
            result = decodeURIComponent(result);
            return result;
        } else {
            return '';
        }
    } catch (e) {
        return '';
    }
}
 
document.getElementById('utm_source').value = parseGET('utm_source');
document.getElementById('utm_medium').value = parseGET('utm_medium');
document.getElementById('utm_campaign').value = parseGET('utm_campaign');
document.getElementById('utm_term').value = parseGET('utm_term');
document.getElementById('utm_content').value = parseGET('utm_content');
</script>
4

1 回答 1

0

这里没有任何东西可以真正设置 cookie,对吧?或从中读取。

我从来没有积极使用过谷歌标签管理器,你说的东西已经设置了 cookie...

我的直觉认为您需要类似的东西if(parseGET('utm_source') == ""),然后使用https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie中的函数

这有帮助吗?

let utm_source = parseGET('utm_source');
if(!utm_source){
    utm_source = document.cookie
      .split('; ')
      .find(row => row.startsWith('utm_source='))
      .split('=')[1];
}
document.getElementById('utm_source').value = utm_source;

?

未经测试,您将不得不尝试并输入正确的 cookie 名称。

于 2021-04-16T17:49:52.163 回答