我有一个Javascript书签,当点击它时,会将用户重定向到新的网页,并将旧网页的URL作为查询字符串中的参数提供。
当原始网页在网址中有双连字符时(例如 我可以使用替代的javascript转义函数吗?解决这个问题的最佳方法是什么?有人知道为什么IIS会在page--1--of--3.html
),我遇到了问题。愚蠢,我知道 - 我无法控制原始页面我正在使用的javascript escape
函数不会转义连字符,如果要求提供resource.aspx?original=page--1--of--3.html
resource.aspx?original=page--1
而不是page-1
上窒息吗?
答案 0 :(得分:4)
“escape”和“unescape”正好被弃用,因为它不会对所有相关字符进行编码。 请勿使用ESCAPE或UNESCAPE 。请改用“encodeURIComponent”和“decodeURIComponent”。除了最古老最破旧的浏览器之外,所有浏览器都支持。这种知识并不常见,这真是一个巨大的耻辱。
(另请参阅encodeURI和decodeURI)
编辑:错误刚刚测试过,但这并没有真正覆盖双连字符。遗憾。
答案 1 :(得分:2)
你可以使用一些自定义逻辑扩展转义函数来手动编码hypen吗?
resource.aspx?original=page%2d%2d1%2d%2dof%2d%2d3.html
这样的事情:
function customEscape(url) {
url = escape(url);
url = url.replace(/-/g, '%2d');
return url;
}
location.href = customEscape("resource.axd?original=test--page.html");
更新,对于书签:
<a href="javascript:location.href=escape('resource.axd?original=test--page.html').replace(/-/g, '%2d')">Link</a>
答案 2 :(得分:1)
你做错了什么。 - 在URL和文件名中是合法的。也许文件确实找不到?
答案 3 :(得分:1)
- 用于以几种脚本语言注释掉文本。 SQL Server使用它来添加注释。您是否使用任何数据库逻辑来存储这些文件名?或者创建任何查询,其中此名称是查询字符串的一部分,而不是使用查询参数?