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 执行顺序: