2017-03-01 154 views
0

我正在努力将用户重定向到默认页面,当他们到达具有特定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

我如何在上面的例子中获得价值幼犬?

回答

2

这不是一个讽刺问题,而是一个普通的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' ] 
} 

希望这是有帮助的!哈哈!

+0

哈!谢谢!汤姆,我应该首先知道这一点。欣赏回应。 –