2009-07-15 11 views
0

私は、特定の要素(その前にアンカーがある)にページのフォーカスを設定しているユースケースがあります。ユーザーがサインインしていない場合、ログインページへのリダイレクトがあり、サインインした後、ユーザーは問題のページにリダイレクトされ、URLがエンコードされます。HTMLエンコードされたリンクとアンカー

私は、リンクされたリンクリンク%23targetはそうではないが、link#targetという形式のURLが期待通りに動作することを確認しました(要素に焦点を当てています)。これは予想される動作ですか?

編集:これが予想される動作であれば、ターゲットに焦点を当てることができますか?のように、URLをエンコードする方法は?
私はpage1.htmlの%の23testとしてページをアクセスしていますが、コード

page1.html 
... html before the anchor ... 
<a name="test">Some code</a> 
... html after the anchor ... 

があると仮定すると:より多くの情報を追加すること

編集。これはpage1.html#testと同じ方法では動作しません。これを実装するjQueryメソッドはありますか? URLがエンコードされた後でもlocation.hashにテストが含まれていますか?私はURLのエンコーディングを変更することはできません。

は編集:私はページがリダイレクトされた後に行きたかったアンカーの名前

私が知っていたように、私はこの問題を解決するために

window.location.hash = namedAnchor 

をしました。このJS行は、顧客が正常にサインインした場合にのみ出力されます。私が探していた一般的な回答ではありませんが、問題を解決しました。私はURLのエンコードで#のエスケープを避けるための方法を探していた。

答えて

5

はい。 #as%23をエンコーディングすると、「単にURLフラグメントではなく、普通の古い文字を意味する」というメッセージが表示されます。他の予約文字についても同様です。エスケープすると、URL内で特別な意味を持つことができなくなります。

URLをパラメータとして渡すときにURLをエンコードする必要がありますが、ログインページではリダイレクトを実行する前にURLをデコードする必要があります。

+0

ありがとうございます!これは少なくとも私の質問の答えの一部です。のように、#がURLエンコードされているときの動作は? – Arvind

0

PHPやその他のスクリプト言語でこの文字列を解析することも、encodeURIComponentを使用してJavaScriptで解析することもできます。私はそのための記事を書いた、あなたはチェックすることができますhttp://www.stoimen.com/blog/2009/05/25/javascript-encode-cyrillic-symbols-with-encodeuricomponent/

希望はあなたを助けることができます。ただし、デフォルトの動作にもかかわらず、どちらの方法でもチェックする必要があります。

関連する問題