2017-03-01 105 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

哈!謝謝!湯姆,我應該首先知道這一點。欣賞迴應。 –