2017-03-01 25 views
0

私は、特定の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

を印刷していることです3210

上記の例で値の子犬を取得するにはどうすればよいですか?

答えて

2

これは一般的なWeb開発の問題ほどアポストロフィ問題ではありません。ハッシュとその後のすべては、ウェブブラウザによってウェブサーバに全く送られない。

これは、ハッシュがページのどこかの「名前付きアンカー」にジャンプするためにのみ使用されていたJavaScript前の日々に戻ります。

ハッシュで何かを行う(または無視する)のは、常にブラウザ側のJavaScriptの責任です。

あなたは書くかもしれません:

if (window.location.hash === '#puppies') { 
    window.location.href = '/admin/signup'; 
} 

かなり簡単に!

jQueryにはフロントエンドルータをいくつでも使用できますが、VueJSまたはReact(リアクションルータはハッシュを使用するように設定されています)のようなフロントエンドフレームワークを使用することもできますが、この単純なタスクは過剰です。

もちろん、このコードをスクリプトタグに入れることもできますし、アポストロフィで「プッシュ」するJavaScriptファイルで行うこともできます。あなたは、あなたのプロジェクト(アポストロフィNPMモジュールを変更しない)に対するlib/modules/apostrophe-assets/public/js/site.jsと呼ばれるファイル内のコードを入れて、app.jsであなたのモジュール構成にこれを追加することができます。

apostrophe-assets: { 
    scripts: [ 'site' ] 
} 

希望を、これは便利です!

+0

ha!ありがとうございました!トム、私は最初にそれを知っていたはずだった。応答を感謝します。 –

関連する問題