1

window.open() 呼び出しを介して「#」文字を含むファイルにリンクしようとしています。ファイルは存在し、通常のアンカー タグを使用して問題なくリンクできます。

「#」文字を「%23」でエスケープしようとしましたが、window.open(myurl) が処理されると、「%23」が「%2523」になります。これは、'%' を '%25' に変更する window.open 呼び出しによって URL 文字列がエスケープされていることを示しています。

この余分なエスケープを回避する方法はありますか。

サンプルコード:

<script language="javascript">
function escapePound(url)
{
   // original attempt
   newUrl = url.replace("#", "%23");
   // first answer attempt - doesn't work
   // newUrl = url.replace("#", "\\#");

   return newUrl;
 }
</script>
<a href="#top" onclick="url = '\\\\MyUNCPath\\PropertyRushRefi-Add#1-ABCDEF.RTF'; window.open(escapePound(url)); return true;">Some Doc</a>

「file://MyUNCPath/PropertyRushRefi-Add%25231-ABCDEF.RTF」と叫ぶ URL が見つかりません

4

4 に答える 4

5

あなたはencodeURIの暗い魔術を求めています:

window.open("http://your-url.com/" + encodeURIComponent("foo#123.jpg"));
于 2008-10-24T15:29:35.577 に答える
0

URLをエスケープしないようにしましたか?

<a href="#top onclick="url = '\\\\MyUNCPath\\PropertyRushRefi-Add#1-ABCDEF.RTF'; window.open(url); return true;">Some Doc</a>
于 2008-10-24T15:40:44.930 に答える
0

ここここで行ったように、JavaScript を介して URL エンコーディングを試しましたか?

于 2008-10-24T15:25:52.667 に答える
0

標準のテキストエスケープ文字「\」を使用してみましたか?

\#
于 2008-10-24T15:21:40.147 に答える