【问题标题】:javascript window.open() and # symboljavascript window.open() 和 # 符号
【发布时间】:2010-09-19 00:55:01
【问题描述】:

我正在尝试通过 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>

找不到显示“file://MyUNCPath/PropertyRushRefi-Add%25231-ABCDEF.RTF”的网址

【问题讨论】:

  • 你能举个代码例子吗?

标签: javascript url-rewriting


【解决方案1】:

你在寻找encodeURI的黑暗魔法:

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

【讨论】:

  • 做到了。不知道为什么这对我们更早不起作用。谢谢。
  • 弄清楚为什么它不能更早地工作。需要先打开窗口,然后在返回的对象上将 location.href 更改为转义字符串。
【解决方案2】:

您是否尝试过使用标准文本转义字符“\”?

\#

【讨论】:

  • 刚刚试过。然后调用的 url 越来越近,但仍然失败。更新问题
【解决方案3】:

您是否尝试过像 herehere 那样通过 JavaScript 进行 URL 编码?

【讨论】:

    【解决方案4】:

    你试过不转义网址吗?

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

    【讨论】:

    • 不转义是不好的,因为 URL 在 # 符号处停止,因为它是一个特殊的 URL 字符
    猜你喜欢
    • 2014-02-17
    • 2013-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-28
    • 2021-02-24
    • 2015-08-20
    • 2011-03-28
    相关资源
    最近更新 更多