Javascript 我在使用google tag manager时遇到了多个具有相同id的表单的问题
您好,我有许多表单在Javascript 我在使用google tag manager时遇到了多个具有相同id的表单的问题,javascript,google-tag-manager,Javascript,Google Tag Manager,您好,我有许多表单在多个页面中所有这些表单都具有相同的id(成功消息)提交后,相同的类名当我发送的表单时,例如在主页内我将元素选择器通过id与页面路径与匹配正则表达式类似的\/(en | es)\/它工作正常,没有问题。。。但是,当我进入页面www.something.com/send something/233?search=profile时,我试图注入定制javascript,比如: function() { var els = document.querySelectorAll('#s
多个页面中
所有这些表单都具有相同的id(成功消息)提交后,相同的类名
当我发送的表单时,例如在主页内我将元素选择器通过id与页面路径与匹配正则表达式类似的\/(en | es)\/
它工作正常,没有问题。。。但是,当我进入页面www.something.com/send something/233?search=profile
时,我试图注入定制javascript,比如:
function() {
var els = document.querySelectorAll('#sendReqSurgyForm1');
for (var i = 0; i < els.length; i += 1) {
if (els[i] === {{Page URL}}) {
return i;
}
}
return '(nothing sent)';
}
function(){
var els=document.queryselectoral('sendReqSurgyForm1');
对于(变量i=0;i
通过向https:\/\/www.something\.com\/(ar | en)\/发送某物\/[0-9]+\?source=[a-zA-Z]+\\[a-zA-Z]+
要匹配url:www.something.com/send something/233?search=profile
触发器始终适用于主页,但位于
www.something.com/send something/233?search=profile
的触发器不成功,javascript的结果始终返回未发送
。。请帮助解决此问题您好,答案是使用SPA,因此它可以是具有相同组件的多个表单,因此我通过为每个具有不同URL的表单设置id解决了此问题
例如,如我在主主题问题中所述,如果在多个路由页面中有多个表单。。要解决此问题,您可以通过js为每个表单提交设置id,方法是为每个表单提交设置新的id
,为基于id的不同URL设置属性
main\u id=exampleForm
function(){
var ids = document.getElementById("exampleForm");//main id
var current_url = window.location.href;//current url of visitor
var dir_match = location.pathname+location.search;//the path of website after .com
var send_req = 'https://www.example.com/'+dir_match.match(/[ar][r]|[en]n/)+'/surgery-request/'+dir_match.match(/[0-9]+/)+'?source=profile';//link1 which have form1
var send_req2 = 'https://www.example.com/'+dir_match.match(/[ar][r]|[en]n/)+'/surgery-request/'+dir_match.match(/[0-9]+/)+'?source=profile2';//link2 which have form2
var home_url = 'https://www.example.com/'+dir_match.match(/[ar][r]|[en][n]/)+'/';//link3 which have form3
if(current_url == send_req){
/* if current_url equal to link1 set new id e.g = `forms_req_surgery` */
last_send_req = ids.setAttribute("id", "forms_req_surgery");
var elm = document.getElementById('forms_req_surgery');
var last_var = elm.id;/* get the name of id */
return last_var; // return the name of id after changed set
}else if(current_url == home_url){
last_home_url = ids.setAttribute("id", "home_req");
var elm2 = document.getElementById('home_req');
var last2_var = elm2.id;
return last2_var;
}else if(current_url == send_req2){
last_send_req2 = ids.setAttribute("id", "forms_req_surgery2");
var elm3 = document.getElementById('forms_req_surgery2');
var last3_var = elm3.id;
return last3_var;
}
}
您不能有重复的ID<代码>id在任何时候每页都必须是唯一的。@connexo我使用的是angular,所以我在多页中使用相同的组件(表单)。只要您确保一页上不存在多个具有相同<代码>id值的元素,没问题。我正在尝试获取网页周围具有相同id的所有表单,然后检查
当前url==={{{Page url}}
是否开始执行与页面url
内的模式匹配的触发器。。注意:Page URL
是gtm中存在的一个内置变量,用于与regex或任何其他函数匹配。您好,角度组件是否需要配置或添加回调函数。如果是,您可以在其上添加数据层片段以获取表单信息。