我以为我会重写这个并添加一些上下文(更多信息,这对我来说更容易解释)。
Basicaly我正在使用popstate事件捕获后退/前进按钮,如下所示:
window.addEventListener("popstate", function(e) {
curstate = window.location.href ;
然后使用switch语句根据新状态确定要执行的操作:
switch (curstate) {
case 'http://mydomain.com/':
navi('about', 200);
break;
case 'http://mydomain.com/resume':
navi('resume', 200);
break;
};
});
状态是mydomain.com/portfolio/-whatever -
时出现问题我需要一个案例:从mydomain.com/portfolio/开始(触及uri的这个位):然后将捕获的位放在变量中,例如currentpage = capturedbitofuri
。
答案 0 :(得分:1)
// returns an array on success or null on failure
var match = /^mydomain\.com\/portfolio\/(.*)/.exec(str);
if (match) {
// match[1] contains the group (.*), which is everything after the prefix
return match[1];
}
答案 1 :(得分:0)
相当简单:/^mydomain\.com\/portfolio\/(.*)/
必须转义/
个字符,因为我们使用/
作为模式的分隔符。
^
表示该字符串必须以“mydomain ...”开头。
最后,.*
表示“任何内容”,周围的( )
表示“在匹配中捕获此内容”。
至于使用它,阅读regex in JS 101,它会给你一个很好的正则表达式介绍:)
答案 2 :(得分:0)
你甚至不需要正则表达式。所有你需要包围的是.indexOf和.substring。
if (curstate === 'http://mydomain.com/') {
navi('about', 200);
} else if (curstate === 'http://mydomain.com/resume')
navi('resume', 200);
} else if (curstate.indexOf('http://mydomain.com/portfolio') > -1) {
var base = 'http://mydomain.com/portfolio';
portfoliosection = curstate.substr(base.length + 1, curstate.length);
}