如何从URL中获取散列值
问题描述:
我正在努力将用户重定向到默认页面,当他们到达具有特定URL的着陆页上时,我想知道在散列之后获取值的最佳方式。如何从URL中获取散列值
例如: 着陆页网址是:http://www.google.com 但是当用户访问http://www.google.com/#puppies他们将被重新定向到http://www.google.com/admin/signup
我创建了一个自定义模块叫我的重定向和index.js看起来像代码下面
module.exports = {
construct: function(self, options) {
self.pageBeforeSend = function(req, callback) {
console.log("URL",req.absoluteUrl);
return callback(null);
};
}
};
的问题是,执行console.log只是打印http://www.google.com即使用户访问http://www.google.com/#puppies
我如何在上面的例子中获得价值幼犬?
答
这不是一个讽刺问题,而是一个普通的web开发问题。散列及其后的所有内容都不会被网页浏览器发送到网络服务器。
一直回到JavaScript之前的日子,当时散列只用于跳转到页面某处的“命名锚点”。
因此,浏览器端JavaScript总是有责任用hash做一些事情(或忽略它)。
你可能会这样写:
if (window.location.hash === '#puppies') {
window.location.href = '/admin/signup';
}
非常简单!
你也可以为jQuery使用任意数量的前端路由器,或者像VueJS或React这样的前端框架(使用React路由器配置为使用散列),但是对于这个简单的任务来说,这将是过度的。
当然,您可以将此代码放在脚本标记中,或者您可以在JavaScript文件中执行此操作,并使用撇号“推送”。你可以将代码放在一个名为lib/modules/apostrophe-assets/public/js/site.js
相对于项目(不修改撇号NPM模块)的文件,而这app.js
添加到您的模块配置:
apostrophe-assets: {
scripts: [ 'site' ]
}
希望这是有帮助的!哈哈!
哈!谢谢!汤姆,我应该首先知道这一点。欣赏回应。 –