如何从 URL 获取哈希值
how to get hash value from the URL
我正在努力将用户重定向到默认页面,当他们到达具有特定 URL 的着陆页时,我想知道在哈希后获取值的最佳方式是什么。
示例:
着陆页 URL 是:http://www.google.com
但是当用户访问 http://www.google.com/#puppies they will be re-directed to http://www.google.com/admin/signup
我创建了一个名为 my-redirect 的自定义模块,index.js 的代码如下所示
module.exports = {
construct: function(self, options) {
self.pageBeforeSend = function(req, callback) {
console.log("URL",req.absoluteUrl);
return callback(null);
};
}
};
问题是即使用户访问 http://www.google.com/#puppies console.log 也只是打印 http://www.google.com
如何获取上例中的值puppies?
这与其说是一个撇号问题,不如说是一个一般的 Web 开发问题。 Web 浏览器根本不会将哈希及其后的所有内容发送到 Web 服务器。
这可以追溯到 JavaScript 之前的日子,当时哈希仅用于跳转到页面中的 "named anchor" 某处。
因此,浏览器端 JavaScript 始终有责任对哈希值进行处理(或忽略它)。
你可以这样写:
if (window.location.hash === '#puppies') {
window.location.href = '/admin/signup';
}
非常简单!
您还可以为 jQuery 使用任意数量的前端路由器,或者像 VueJS 或 React 这样的前端框架(将 React Router 配置为使用哈希),但对于这个简单的任务来说,这太过分了。
当然,您可以将此代码放在脚本标记中,或者您可以在 "push" 带有撇号的 JavaScript 文件中进行。您可以将代码放在与您的项目相关的名为 lib/modules/apostrophe-assets/public/js/site.js
的文件中(不要修改撇号 npm 模块),并将其添加到 app.js
:
中的模块配置中
apostrophe-assets: {
scripts: [ 'site' ]
}
希望对您有所帮助!
我正在努力将用户重定向到默认页面,当他们到达具有特定 URL 的着陆页时,我想知道在哈希后获取值的最佳方式是什么。
示例: 着陆页 URL 是:http://www.google.com 但是当用户访问 http://www.google.com/#puppies they will be re-directed to http://www.google.com/admin/signup
我创建了一个名为 my-redirect 的自定义模块,index.js 的代码如下所示
module.exports = {
construct: function(self, options) {
self.pageBeforeSend = function(req, callback) {
console.log("URL",req.absoluteUrl);
return callback(null);
};
}
};
问题是即使用户访问 http://www.google.com/#puppies console.log 也只是打印 http://www.google.com
如何获取上例中的值puppies?
这与其说是一个撇号问题,不如说是一个一般的 Web 开发问题。 Web 浏览器根本不会将哈希及其后的所有内容发送到 Web 服务器。
这可以追溯到 JavaScript 之前的日子,当时哈希仅用于跳转到页面中的 "named anchor" 某处。
因此,浏览器端 JavaScript 始终有责任对哈希值进行处理(或忽略它)。
你可以这样写:
if (window.location.hash === '#puppies') {
window.location.href = '/admin/signup';
}
非常简单!
您还可以为 jQuery 使用任意数量的前端路由器,或者像 VueJS 或 React 这样的前端框架(将 React Router 配置为使用哈希),但对于这个简单的任务来说,这太过分了。
当然,您可以将此代码放在脚本标记中,或者您可以在 "push" 带有撇号的 JavaScript 文件中进行。您可以将代码放在与您的项目相关的名为 lib/modules/apostrophe-assets/public/js/site.js
的文件中(不要修改撇号 npm 模块),并将其添加到 app.js
:
apostrophe-assets: {
scripts: [ 'site' ]
}
希望对您有所帮助!