function escape(s) { var url = 'javascript:console.log(' + JSON.stringify(s) + ')'; console.log(url); var a = document.createElement('a'); a.href = url; document.body.appendChild(a); a.click(); }
JSON.stringify()用于从一个对象解析出字符串。
试输入:123
只要闭合第一个双引号就 ok 了,可 JSON.stringify() 转义了双引号,我们只要将双引号进行某种编码,安全通过stringify(),console.log()执行前再解码。
编码方式:
html编码;
url编码;
js中的 unicode 编码、八进制、16进制;
javascript:console.log() 的上下文环境是 url , 所以将双引号 urlencode 为 %22 就ok。