我在使用 google 标签管理器时遇到具有相同 ID 的多个表单的问题
i have problem with multiple form with the same id with google tag manager
您好,我在 multiple pages
中有很多 表格 ,所有表格都带有 same id
(成功消息 ) 提交后 same class names
当我发送 例如 在 主页 中的表格时] 我把元素选择器通过 id 和 Page PATH 和 match regex 类似的东西 \/(en|es)\/
它工作得很好没有问题......但是当我要翻页 www.something.com/send-something/233?search=profile
通过旧 ID 提交的用于 home page
的表单时,我尝试注入自定义 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)';
}
添加匹配 页面 URL 与 匹配正则表达式 类似 https:\/\/www\.something\.com\/(ar|en)\/send-something\/[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 的结果总是 returns nothing sent
.. 请帮忙解决这个问题
您好,答案是 SPA Angular 使用 SPA 因此它可以是具有相同组件的多种形式所以我通过为具有不同 url 的每个表单设置 id 解决了这个问题
例如,如果您在多个路由页面中的 angular 中有多个表单,正如我在主要主题问题中所解释的那样..要解决此问题,您可以通过设置新的 id
来通过 js 为每个表单提交设置 id setting Attribute
为基于不同 url 的 id 提交的每个表单。
main_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;
}
}
您好,我在 multiple pages
中有很多 表格 ,所有表格都带有 same id
(成功消息 ) 提交后 same class names
当我发送 例如 在 主页 中的表格时] 我把元素选择器通过 id 和 Page PATH 和 match regex 类似的东西 \/(en|es)\/
它工作得很好没有问题......但是当我要翻页 www.something.com/send-something/233?search=profile
通过旧 ID 提交的用于 home page
的表单时,我尝试注入自定义 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)';
}
添加匹配 页面 URL 与 匹配正则表达式 类似 https:\/\/www\.something\.com\/(ar|en)\/send-something\/[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 的结果总是 returns nothing sent
.. 请帮忙解决这个问题
您好,答案是 SPA Angular 使用 SPA 因此它可以是具有相同组件的多种形式所以我通过为具有不同 url 的每个表单设置 id 解决了这个问题
例如,如果您在多个路由页面中的 angular 中有多个表单,正如我在主要主题问题中所解释的那样..要解决此问题,您可以通过设置新的 id
来通过 js 为每个表单提交设置 id setting Attribute
为基于不同 url 的 id 提交的每个表单。
main_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;
}
}