我们正在向网站的主页添加视频,并且希望能够在网址中存在#video标记时自动弹出视频(在灯箱式容器中):
http://www.domain.com#video
如果在网站内部点击链接(例如:<a href="#video">
),并且页面加载时网址中存在哈希值,则需要弹出视频。
使用window.location.hash
或点击带有哈希的链接并触发相关的javascript函数时,可以轻松检查URL中的哈希值。这没有任何问题,按预期工作。
但是,由于此网址会在自动添加Google Analytics代码的电子邮件中发送,因此分析代码会附加到网址的末尾:
http://www.domain.com#video?utm_source=...
由于每个电子邮件广告系列的分析代码都会发生变化,因此我无法使用简单的Javascript replace()
来忽略分析代码。
我如何检查URL中是否存在哈希值,但忽略后面的任何内容?如果有的话?
答案 0 :(得分:0)
location.hash.match(/[^?]*/)
假设哈希始终是第一个,那应该这样做。
答案 1 :(得分:0)
在查询参数之后,是否有正确的URL形式?然后,location.hash变量将正常工作,您将不需要特殊代码。您的网址应如下所示,然后您可以直接使用location.hash
#video
:
http://www.domain.com?utm_source=xxx#video
我不建议将此作为解决方案(我认为您应该将URL修复为合法的),但是您可以使用此代码来解析URL中的哈希值,即使它处于非法位置:
var matches = window.location.href.match(/#(.*?)(\?|$)/);
if (matches) {
var hash = matches[1];
}
此代码从“#”中提取到字符串的两端或“?”以先到者为准。您可以在此处看到它在一堆测试网址上运行:http://jsfiddle.net/jfriend00/HuqL7/。
答案 2 :(得分:0)
(这是对你的问题的字面答案,但有一个很大的问题)技术上,你可以测试:
var h = window.location.hash;
var ind = h.indexOf( '?' );
var test = ind <0?h:h.substr(0, ind)
如果您希望Google Analytics正常运行,则可能会遇到问题#
。规则是#
之后的所有内容都不会发送到服务器,这意味着您的Google Analytics可能会离开窗口。您需要确保在所有Google内容之后添加哈希值。如果是,那么你不必担心测试任何东西。