JSONP 的原理很简单,就是利用 <script> 标签没有跨域限制的漏洞。通过 <script> 标签指向一个需要访问的地址并提供一个回调函数来接收数据当需要通讯时。
function jsonp(url, jsonpCallBack, success) {
var script = document.createElement('script')
script.src = url
script.async = true
script.type = 'text/javascript'
window[jsonpCallBack] = function (data) {
success && success(data)
}
document.body.appendChild(script)
}
jsonp('<https://xxx>', 'callback', function (value) {
console.log(value)
})
script 执行顺序:
.js 文件下载并执行完,才会继续载入执行.js 文件异步加载,直到 DOMContextLoaded事件之前执行.js 文件异步加载,加载完立即执行,会在 Load 事件之前执行