如何使用回调函数导入外部JS?

Win*_*ton 3 javascript google-cloud-endpoints

我正在使用Google API,根据他们的链接,我必须将以下脚本放在HTML文件中

<script src="https://apis.google.com/js/client.js?onload=callback"></script>
Run Code Online (Sandbox Code Playgroud)

在成功加载client.js之后加载自定义回调函数.

function callback() {
  var ROOT = 'https://your_app_id.appspot.com/_ah/api';
  gapi.client.load('your_api_name', 'v1', function() {
    doSomethingAfterLoading();
  }, ROOT);
}
Run Code Online (Sandbox Code Playgroud)

我想要

  1. 用JS文件分隔HTML
  2. 我下载了client.js文件并将其放入我的本地仓库.但是为了减少Web请求,我想将client.js与其他JS文件连接起来.但我不知道如何使用连接的JS文件加载内容,并调用回调

提前致谢

DDa*_*Dan 6

如果您正在寻找仅限javascript的解决方案:

var sScriptSrc = "https://apis.google.com/js/client.js?onload=callback"
loadScript(sScriptSrc);

function loadScript(sScriptSrc) {
    var oHead = document.getElementsByTagName("HEAD")[0];
    var oScript = document.createElement('script');
    oScript.type = 'text/javascript';
    oScript.src = sScriptSrc;
    oHead.appendChild(oScript);
    oScript.onload = loadedCallback();
}

function loadedCallback() {
    alert("WoHooo I am loaded");
}
Run Code Online (Sandbox Code Playgroud)

看到它在这里运行:JSFiddle

编辑

如果我理解你想要实现的目标,让我做一些改进:

我做了一个简单的主要html页面:

<html>
<head>
<script src="client.js"></script>
</head>
<body>
    PAGE BODY
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

哪个正在加载 client.js

client.js包含:

// you can call this function with
//     param1: src of the script to load
//     param2: function name to be executed once the load is finished 
function loadScript(sScriptSrc, loadedCallback) {
    var oHead = document.getElementsByTagName("HEAD")[0];
    var oScript = document.createElement('script');
    oScript.type = 'text/javascript';
    oScript.src = sScriptSrc;
    oHead.appendChild(oScript);
    oScript.onload = loadedCallback;
}

// let's load the Google API js and run function GoggleApiLoaded once it is done.
loadScript("https://apis.google.com/js/client.js", GoggleApiLoaded);

function GoggleApiLoaded() {
    alert("WoHooo Google API js loaded");
}
Run Code Online (Sandbox Code Playgroud)

当然,代替GoggleApiLoaded示例函数,你可以运行一个方法来开始加载不同的js,并且那个的回调可以加载下一个,依此类推......

这是你在找什么?


Mr.*_*mee 2

jQuery 有一个很好的方法来实现这一点。https://api.jquery.com/jquery.getscript/

jQuery.getScript("https://apis.google.com/js/client.js", function() {
        console.log("hello");
    })
Run Code Online (Sandbox Code Playgroud)