2008-10-24 33 views
0

我试图通过window.open()调用链接到具有'#'字符的文件。该文件确实存在,并且可以使用普通的锚标签进行链接。javascript 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> 

URL说 “文件://MyUNCPath/PropertyRushRefi-Add%25231-ABCDEF.RTF” 无法找到

+0

你能举一个例子吗? – StingyJack 2008-10-24 15:27:18

回答

6

你追求的encodeURI黑暗magicks:

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

这样做了。不知道为什么这在早些时候不适合我们。谢谢。 – shrub34 2008-10-24 15:43:11

+1

找出它为什么没有工作得更早。需要首先打开窗口,然后在返回的对象上将location.href改为转义字符串。 – shrub34 2008-10-24 15:50:05

0

你有没有尝试使用标准文本逃逸字符“\”?

\# 
+0

刚刚尝试过。所调用的URL然后靠得更近,但仍然失败。更新问题 – shrub34 2008-10-24 15:25:54

0

你有没有通过JavaScript试图URL编码为完成herehere

0

你有没有试过逃跑的网址是什么?

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