javascript window.open()および#記号
-
04-07-2019 - |
質問
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"));
所属していません StackOverflow