从外部JS脚本设置响应数据

时间:2017-03-13 07:55:46

标签: javascript

我有这个脚本

<script>
function loadJS(src, callback) {
    var s = document.createElement('script');
    s.src = src;
    s.async = true;
    s.onreadystatechange = s.onload = function() {
        var state = s.readyState;
        if (!callback.done && (!state || /loaded|complete/.test(state))) {
            callback.done = true;
            callback();
        }
    };
    document.getElementsByTagName('head')[0].appendChild(s);
}
loadJS('/script/script.js', function() { 
    // put your code here to run after script is loaded
});
</script>

我无法弄清楚如何从我正在尝试加载的脚本中获取响应数据。

基本上,这个脚本包含一个执行某些操作的函数,然后返回一些值。

我知道在jQuery模拟in data函数中只是getScript参数,但我这里只有原生JS。

我应该添加什么以及在哪里获取响应数据?

1 个答案:

答案 0 :(得分:0)

假设您的脚本包含在全局范围内声明的函数,您只需包含此脚本,然后执行任何函数/访问此脚本中的任何成员:

加载并执行脚本后,您可以使用它,就像使用当前文档中的简单脚本一样。

这是一个从Google CDN加载jQuery脚本然后输出jQuery版本(这是jQuery库的一部分)的演示:

function loadJS(src, callback) {
  var s = document.createElement('script');
  s.src = src;
  s.async = true;
  s.onreadystatechange = s.onload = function() {
    var state = s.readyState;
    if (!callback.done && (!state || /loaded|complete/.test(state))) {
      callback.done = true;
      callback();
    }
  };
  document.getElementsByTagName('head')[0].appendChild(s);
}

console.log("typeof jQuery: " + typeof jQuery); // jQuery not loaded
loadJS("https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js", function() {
  console.log("typeof jQuery: " + typeof jQuery + ", version = " + jQuery.fn.jquery); // jQuery has been loaded
});