我有一个Javascript书签小程序,当单击它时,它会将用户重定向到新网页,并在查询字符串中提供旧网页的URL作为参数。
当原始网页的URL中有双连字符时,我遇到了一个问题(例如:page--1--of--3.html)。愚蠢,我知道-我不能控制原始页面我正在使用的javascript escape函数不能转义连字符,如果请求提供resource.aspx?original=page--1--of--3.html,IIS6会给出文件未找到错误
有没有其他的javascript转义函数可以使用?解决这个问题的最佳方法是什么?有人知道为什么IIS在resource.aspx?original=page--1上阻塞而不是page-1吗?
发布于 2009-06-17 04:30:13
你能用一些自定义的逻辑来扩展转义函数来手动编码这个假设吗?
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>发布于 2009-06-17 05:22:48
“转义”和“不转义”不被推荐使用,因为它没有对所有相关字符进行编码。请勿使用ESCAPE或UNESCAPE。请改用"encodeURIComponent“和"decodeURIComponent”。除了最老、最破旧的浏览器之外,所有浏览器都支持。这真是一个巨大的耻辱,这种知识并不是很普遍。
(另请参阅encodeURI和decodeURI)
编辑: err刚刚测试过,但这并不能真正涵盖双连字符。抱歉的。
发布于 2009-06-17 04:32:11
你还做错了什么。--在URL和文件名中是合法的。也许真的找不到这个文件?
https://stackoverflow.com/questions/1005108
复制相似问题