2008-10-24 5 views
0

Я пытаюсь установить ссылку на файл с символом '#' через вызов window.open(). Файл существует и может быть привязан к простому, используя обычный тег привязки.javascript window.open() и # symbol

Я попытался экранировать символ '#' с помощью «% 23», но когда обрабатывается window.open (myurl), «% 23» становится «% 2523». Это говорит мне, что моя строка url escapped вызовом 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:

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

ли вы использовать стандартный текст побег char "\"?

\# 
+0

Просто попробовал это. Затем URL-адрес становится ближе, но все равно не работает. Обновление вопроса – shrub34 2008-10-24 15:25:54

0

Вы пробовали кодирование URL с помощью JavaScript, как это сделано here и here?

0

Вы пробовали не спасаясь от URL?

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