慕标琳琳
jsonp 应该不行,报错信息也提示了,这是张图片,不是可执行脚本,可以换种方式: window.onload = function() { var aLink = document.createElement('a'); aLink.href = 'http://favicon.byi.pw/?url=https://www.baidu.com/'; aLink.download = 'img'; aLink.style.display = 'none'; document.body.appendChild(aLink); aLink.click(); };jsonp 为什么不行,这要涉及到 jsonp 的原理了,比如一个可以通过 jsonp 访问的 urlhttp://freegeoip.net/json/?callback=handleResponse实际上这个 url 里的内容应该是这个样子:handleResponse(data);jsonp 技术,实际上代码是这样:var script = document.createElement("script");script.src = "http://freegeoip.net/json/?callback=handleResponse";document.body.insertBefore(script, document.body.firstChild);很明显,这个元素加载好了后,肯定直接执行脚本里的代码,实际上就是执行handleResponse(data);那么,如果你在本地脚本里定义了 handleResponse 函数 function handleResponse(data){ // do something about the data }那你两串代码连在一起不就是: handleResponse(data); function handleResponse(data){ // do something about the data }那这个跨域的数据不就直接在 handleResponse 里拿到了么,,,但你这里是图片,不是可执行脚本,当然会报错