質問

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

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

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

サンプルコード:

<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>

&quot; file://MyUNCPath/PropertyRushRefi-Add%25231-ABCDEF.RTF"と叫ぶURL見つかりません

役に立ちましたか?

解決

encodeURI のダークマジックを探します:

window.open("http://your-url.com/" + encodeURIComponent("foo#123.jpg"));

他のヒント

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

\#

こちらおよびこちら

URLをエスケープしないでみましたか?

<a href="#top onclick="url = '\\\\MyUNCPath\\PropertyRushRefi-Add#1-ABCDEF.RTF'; window.open(url); return true;">Some Doc</a>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top