2009-06-17 6 views
4

私は、クリックすると新しいWebページにリダイレクトされ、古いWebページのURLをクエリ文字列のパラメータとして提供するJavascriptブックマークレットを持っています。Javascriptで二重ハイフンをエスケープしますか?

元のウェブページにURLに二重ハイフン(例:page--1--of--3.html)があると、問題が発生しています。代替のjavascriptがあり、私は、元のページに、私はハイフンをエスケープしません使用しているJavaScriptのescape機能を制御することはできません、とresource.aspx?original=page--1--of--3.html

を提供するために要求された場合、IIS 6は、ファイルが見つからないというエラーを与える - 愚かな、私は知っています私は使うことができるエスケープ機能?この問題を解決する最良の方法は何ですか? IISがresource.aspx?original=page--1で窒息していて、page-1でない理由を誰かが知っていますか?

+0

あなたはサーバーログをチェックして、リクエストを受信して​​いることを確認していますか? – Breton

答えて

2

ハイフンを手動でエンコードするカスタムロジックを使用してエスケープ機能を拡張できますか?

resource.aspx?original=page%2d%2d1%2d%2dof%2d%2d3.html 

このような何か:

function customEscape(url) { 
    url = escape(url); 
    url = url.replace(/-/g, '%2d'); 
    return url; 
} 

location.href = customEscape("resource.axd?original=test--page.html"); 

ブックマークレットの更新、:

<a href="javascript:location.href=escape('resource.axd?original=test--page.html').replace(/-/g, '%2d')">Link</a> 
+0

ブックマークレット内でこれを行うことは可能ですか? – ine

+0

ブックマークレットでアップデートを追加しました – bendewey

+2

これはうまくいくと思いますが、率直に言っても意味がありません。これは、IIS6が仕様にないURLに何かをしていることを意味します(驚くことではありませんが、私はそれも聞いたことがありません)。 – SpliFF

1

あなたは間違って何かをやっています。 - URLとファイル名で合法です。ファイルが本当に見つからないのでしょうか?

+0

私はファイルが存在し、そこにあることを確信しています。エラーは、二重ハイフンが存在する場合にのみ発生します。これはIIS 6だということを覚えておいてください。 – ine

+0

あなたはresource.aspxがいくつかの狂った理由のためにdouble-hythensを取り除いていないことを確認しましたか? – SpliFF

+0

はい、かなり確かです - サーバーはresource.aspxが要求を見る前に404を返します。 – ine

1

- いくつかのスクリプト言語でテキストをコメントアウトするために使用されます。 SQL Serverはこれを使用してコメントを追加します。これらのファイル名を格納するためにデータベースロジックを使用していますか?または、クエリパラメータを使用する代わりに、この名前がクエリ文字列の一部であるクエリを作成しますか?

+0

いいえといいえ。いい考えをしています。 – ine

4

"escape"と "unescape"はすべての関連文字をエンコードしないため、非推奨です。 エスケープまたはUNESCAPEを使用しないでください。代わりに "encodeURIComponent"と "decodeURIComponent"を使用してください。最も古いブラウザを除き、すべてのブラウザでサポートされています。この知識ははるかに一般的ではありませんが、本当に大きな恥です。

(もencodeURIとdecodeURIを参照)

編集:ちょうどテスト誤るが、これは本当にまだ二重ハイフンをカバーしていません。ごめんなさい。

+0

これらはハイフンをエスケープしていないようです... – Alconja

+0

あなたは正しいです、残念です。しかし、メッセージの基本的な勢いは、手元の問題を解決しなくても、依然として真です。 – Breton

関連する問題