这很奇怪,使用DW CC 2018(如遇问题),当我在HTML页面的脚本标记内使用URLSearchParams
时,它不会被标记为“错误”
我将URLSearchParams
放在我的外部JS文件中,在函数内部,它被标记为“未定义”。 DW将其标记为错误,但它仍然有效,因此必须更多地是“警告”而不是错误。这让我有点担心,即使它是一个警告,它可能会在上线时破坏。
我应该担心,还是仅仅忽略一次?
答案 0 :(得分:0)
Dreamweaver可能会使用过时的"预期全局变量列表"在其索引器中未经更新以包含URLSearchParams
API,因为它相对较新。
如果您不关心向后兼容性 * cough * IE * cough * ,只需在违规文件中的某处添加此内容即可让Dreamweaver闭嘴:
const URLSearchParams = window.URLSearchParams;
如果Dreamweaver不支持ES6语法(我从未使用过它),那么你必须将它添加到不在顶层的地方:
(function () {
// must be in a closure
var URLSearchParams = window.URLSearchParams;
...
})();
原因是顶级var
会覆盖某些浏览器中的全局命名空间。
答案 1 :(得分:0)
您可以编写自定义URLSearchParams类
class UrlSearchParams {
constructor(query) {
this.query = query;
}
getSearchObject = () => {
const { query } = this;
return query
? (/^[?#]/.test(query) ? query.slice(1) : query)
.split("&")
.reduce((params, param) => {
let [key, value] = param.split("=");
params[key] = value
? decodeURIComponent(value.replace(/\+/g, " "))
: "";
return params;
}, {})
: {};
};
getAll = () => {
const searchParams = this.getSearchObject();
return searchParams;
}
get = param => {
const searchParams = this.getSearchObject();
return searchParams[param];
};
setUrl = (param, value) => {
const searchParams = this.getSearchObject();
searchParams[param] = value;
return Object.keys(searchParams)
.map(key => key + "=" + searchParams[key])
.join("&");
};
}
export default UrlSearchParams;