读书笔记-《JavaScript高级程序设计》-第2章 在HTML中使用JavaScript

147 阅读1分钟

<script>元素

  • 带有src属性的标签之间再有js的代码,只会下载和执行外部脚本文件,忽略潜入的代码
 <script src="./test.js">
        alert(2)  //这一段代码会被忽略,只执行test.js的代码(即使里面是空)
</script>
  • <script>标签的src可以引用外部域的js文件,这就是为什么可以<script>标签解决跨域的问题
function jsonp(setting) {
    setting.data = setting.data || {};
    setting.key = setting.key || 'jsoncallback';
    setting.callBack = setting.callBack || function(){};
    setting.data[setting.key] = '_getData_';
    
    window._getData_ = function(data) {
      setting.callBack(data)
    }
    
     let script = document.createElement('script')
     let query = [];
    for(let key in setting.data) {
      query.push(key + '=' + encodeURIComponent(setting.data[key]))
    }
    script.src = setting.url + '?' + query.join('&');
    document.head.appendChild(script);
    document.head.removeChild(script);
  }
  
  jsonp({
      url: 'https://photo.sina.cn/aj/index',
      key: 'jsoncallback',
      data: {
        page: 1,
        cate: 'recommend'
      },
      callBack: function(ret){
        console.log(ret)
      }
    })

代码参考:zhuanlan.zhihu.com/p/22600501