0

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

link#targetという形式のURLは(要素に焦点を合わせて)期待どおりに機能しますが、URLエンコードされたリンクlink%23targetは機能しません。これは予想される動作ですか?

編集:これが予想される動作である場合、ターゲットに焦点を合わせるための回避策はありますか?のように、urlエンコードを回避する方法は?

さらに情報を追加して編集:
コードがあると仮定します

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

page1.html%23testとしてページにアクセスしています。これは、page1.html#testと同じようには機能しません。これを実装するためのjQueryメソッドはありますか?location.hashには、URLエンコードされた後でもテストが含まれますか?URLエンコードを変更することはできません。

編集:

ページがリダイレクトされた後、どの名前のアンカーに行きたいかを知っていたので、

window.location.hash = namedAnchor  

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

4

2 に答える 2

5

はい。#を%23としてエンコードすると、「URLフラグメントではなく、単純な古い「#」文字を意味します」と効果的に示されます。同じことが他の予約文字にも当てはまります。それらをエスケープすると、URLで特別な意味を持つことができなくなります。

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

于 2009-07-15T06:06:51.733 に答える
0

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

それがあなたを助けることを願っています。ただし、デフォルトの動作にもかかわらず、いずれかの方法で確認する必要があります。

于 2009-07-15T06:11:25.950 に答える