Javascript 使用自定义JS提取URL路径的最后一部分-但不使用添加的参数?
我试图提取要在GTM中跟踪的URL的最后一部分,但不包括添加的参数,如“.gclid=…”。 例如: 我只想提取5f5a0a9472cf844b320b6136。 到目前为止,我使用了:Javascript 使用自定义JS提取URL路径的最后一部分-但不使用添加的参数?,javascript,google-tag-manager,Javascript,Google Tag Manager,我试图提取要在GTM中跟踪的URL的最后一部分,但不包括添加的参数,如“.gclid=…”。 例如: 我只想提取5f5a0a9472cf844b320b6136。 到目前为止,我使用了: function() { var pageUrl = window.location.href; return pageUrl.split("/")[pageUrl.split("/").length - 1]; } 但这给了我gclid号码。这个问题是,该参数只存在于
function() {
var pageUrl = window.location.href;
return pageUrl.split("/")[pageUrl.split("/").length - 1];
}
但这给了我gclid号码。这个问题是,该参数只存在于登录页上,而不存在于后续页上。
因此,如果我使用length-2]
,那么一旦他们离开登录页,这将不起作用。它将返回/m/。
如何转义登录页上的“?”字符串?您可以执行类似的操作,这将更容易
function (){
paths = window.location.pathname.split("/")
return paths[paths.length-1]
}
也许这会有帮助
const strs=[
"https://example.com/5f5a0a9472cf844b320b6136/?gclid=1234/",
"https://example.com/m/5f5a0a9472cf844b320b6136/?gclid=1234/",
"https://example.com/m/n/5f5a0a9472cf844b320b6136/",
"https://example.com/m/n/5f5a0a9472cf844b320b6136",
];
标准forEach((str)=>{
// ********************
if(str.includes(“?”){
const parts=str.split(“/?”[0]。split(“/”);
console.log(parts[parts.length-1]);
}否则{
const lastChar=str.charAt(str.length-1);
str=lastChar===“/”?str.substring(0,str.length-1):str;
const parts=str.split(“/”);
console.log(parts[parts.length-1]);
}
// ********************
});代码>由于您正在使用GTM,请启用并使用内置的“page path”变量,该变量不包括参数:
function() {
return {{Page Path}}.split("/").pop();
}
pop()
返回数组中的最后一个元素(它也会从数组中删除它,在本例中这并不重要)。好的,我找到了一个我想与大家分享的替代解决方案。因为变量字符串的总数总是24个字符,所以我创建了一个函数来查找它
function getQuoteId() {
var segments = window.location.pathname.split('/');
for (var i = segments.length - 1; i >= 0; i--) {
if (segments[i] && segments[i].length === 24) {
return segments[i];
}
}
return null;
}
这减少了尾随“/”以及添加的参数,并返回了我想要隔离的路径。感谢所有建议。我发现了各种各样的成功,我想我明白为什么。首先是澄清。登录页是会话唯一的动态编号(5f5a0…6136)。所以每次访问都不一样。其次,登录页后面有一个斜杠。这会在第一页中去掉pop()
和length-1
,但是代码会在后面没有斜杠的页面上工作。我认为pathname选项可以工作,但需要考虑尾部斜杠。