设置document.location时,浏览器会转义一些url无效字符,但不会转义其他字符
Browser escapes some URL-invalid characters but not others when setting document.location
(请不要讲座这不是正确的方式来构建url等;这是遗留代码,我有更重要的事要做。我只是想知道浏览器认为它在做什么。
给定以下函数:
function redirectToSearch(baseURL) {
var searchString = document.getElementById("searchBox").value;
document.location = baseURL + "&searchString=" + searchString;
}
其中searchBox
元素是一个文本字段:如果您输入类似
{ a ^ b } " c | d "
并调用此函数,则重定向到的结果URL以
结尾。searchString={%20a%20^%20b%20}%20%22c%20|%20d%22
——空格和引号被转义,但没有其他内容,即使{
、}
和|
也应该是无效字符。这在Chrome、Firefox和IE中似乎都是正确的。
好吧,大概我可以通过自己编码字符串来修复这个问题,但我想知道的是,为什么只有空格和引号(可能还有其他我没有发现的字符)?为什么不是所有无效字符,或者没有无效字符?
这是因为它们可能是URL本身的特殊字符,而空格和您提到的其他项在URL中没有特殊意义。因为它知道你正在设置一个URL(假设location
是一个URL),然后它把它变成一个URL的最好方式,它可以。
当然,您可以使用encodeURIComponent
来解决这个问题。
你得到一个错误吗?你不应该。浏览器的行为不同,会为您做一些编码,以使其更容易阅读。但是,正如您已经注意到的,您应该使用encodeURIComponent()
单独编码每个组件(名称和值)…仅仅因为浏览器试图修复你的错误并不意味着你应该让他们…
相关文章:
- 在JavaScript中输出转义字符
- 删除单引号字符转义
- Javascript-正则表达式,用于在未转义字符上拆分字符串,例如|,但忽略|
- Javascript-转义特定字符
- 正在转义javascript数组中的html字符
- 使用jQuery.css()方法时,是否需要转义任何字符
- 如何转义php中的新行字符以输出为javascript字符串值
- 转义我的 HTML 字符
- 带有Ajax请求的Javascript JSON.parse函数n〃;新行转义字符
- Regex允许某些特殊字符-转义问题
- 字符转义:从 Python 字符串文字到 JSON,然后到 HTML
- 如何防止knockout.js数据绑定中的字符转义
- Unicode字符转义序列在handle.js中打印不正确
- ES6:创建ASCII字符串的字符转义序列不正确
- 具有字符转义的字符范围
- 为什么我不能正确地附加具有指定id的标签?是字符转义问题吗?
- 在Javascript中使用regex或indexOf更改字符串中的特定字符(转义字符)
- 在ASP上使用JavaScriptSerializer进行Unicode字符转义.. NET MVC依赖于配置
- JavaScript 中的字符转义序列
- 如何将HTML字符串赋值给JavaScript中的变量,并轻松地从特殊字符转义