使用 JavaScript 从 clean/SEO 个友好 URL 获取查询字符串参数
Getting query string parameters from clean/SEO friendly URLs with JavaScript
我最近将我的站点切换为使用 clean/SEO-friendly URLs,这导致我在获取查询字符串参数时使用的 JavaScript 函数出现了一些问题。
之前我一直在使用这个功能:
function getQueryVariable(variable) {
var query = window.location.search.substring(1);
var vars = query.split("&");
for (var i = 0; i < vars.length; i++) {
var pair = vars[i].split("=");
if (pair[0] == variable) {
return pair[1];
}
}
return (false);
}
在 this 这样的事情上效果很好,因为你可以调用 getQueryVariable("image")
和 return "awesome.jpg".
我一直在玩indexOf();
函数,试图从当前URL中获取相关参数,例如:
var url = window.location.pathname;
var isPage = url.indexOf("page") + 1;
试图获取"page"参数的数组索引号,然后将其加1以移动到(?page=name > /page/name/)
的值
JavaScript 不是我的主要语言,所以我不习惯使用数组等,我试图将它变成一个新函数让我很头疼。
有什么指点吗?
这可以使用 router.js 等库正式完成,但我会选择简单的字符串操作:
const parts = '/users/bob'.split('/')
const name = parts[parts.length - 1] // 'bob'
这样的事情怎么样?它拆分路径并在确定 key/value 对时不断移出数组的第一个元素。
function getPathVariable(variable) {
var path = location.pathname;
// just for the demo, lets pretend the path is this...
path = '/images/awesome.jpg/page/about';
// ^-- take this line out for your own version.
var parts = path.substr(1).split('/'), value;
while(parts.length) {
if (parts.shift() === variable) value = parts.shift();
else parts.shift();
}
return value;
}
console.log(getPathVariable('page'));
我最近将我的站点切换为使用 clean/SEO-friendly URLs,这导致我在获取查询字符串参数时使用的 JavaScript 函数出现了一些问题。
之前我一直在使用这个功能:
function getQueryVariable(variable) {
var query = window.location.search.substring(1);
var vars = query.split("&");
for (var i = 0; i < vars.length; i++) {
var pair = vars[i].split("=");
if (pair[0] == variable) {
return pair[1];
}
}
return (false);
}
在 this 这样的事情上效果很好,因为你可以调用 getQueryVariable("image")
和 return "awesome.jpg".
我一直在玩indexOf();
函数,试图从当前URL中获取相关参数,例如:
var url = window.location.pathname;
var isPage = url.indexOf("page") + 1;
试图获取"page"参数的数组索引号,然后将其加1以移动到(?page=name > /page/name/)
JavaScript 不是我的主要语言,所以我不习惯使用数组等,我试图将它变成一个新函数让我很头疼。
有什么指点吗?
这可以使用 router.js 等库正式完成,但我会选择简单的字符串操作:
const parts = '/users/bob'.split('/')
const name = parts[parts.length - 1] // 'bob'
这样的事情怎么样?它拆分路径并在确定 key/value 对时不断移出数组的第一个元素。
function getPathVariable(variable) {
var path = location.pathname;
// just for the demo, lets pretend the path is this...
path = '/images/awesome.jpg/page/about';
// ^-- take this line out for your own version.
var parts = path.substr(1).split('/'), value;
while(parts.length) {
if (parts.shift() === variable) value = parts.shift();
else parts.shift();
}
return value;
}
console.log(getPathVariable('page'));