调用函数onload of external script

时间:2015-05-06 23:44:34

标签: javascript google-drive-api onload

我正在玩Google Drive API,并注意到他们正在调用client.js的handleClientLoad函数onload

<script src="https://apis.google.com/js/client.js?onload=handleClientLoad"></script>

试图避免创建全局变量,我想我会从创建另一个js文件开始,该文件将包含一个模块模式并返回handleClientLoad

var module = (function (window, $) {

    'use strict';

     var module = {
         handleClientLoad: function () {
             console.log('ok, can access');
         }
     };

     return module;

}(window, jQuery));

然后我假设我可以通过执行handleClientLoad来调用module.handleClientLoad,但这似乎无法正常工作。

    <script src="scripts/main.js"></script>
    <script src="https://apis.google.com/js/client.js?onload=module.handleClientLoad"></script>

问题:

  1. 是否可以从client.js的onload调用module.handleClientLoad

  2. 追加onload并从脚本文件中调用函数看起来很草率和突兀,不是吗?是否有更清晰的方法来了解client.js何时加载?

2 个答案:

答案 0 :(得分:1)

  1. 您是否尝试过调试器,是否确定模块。 hanfleClientLoad在回调被触发时存在?

  2. 您可以轮询gapi.client作为全局对象的存在。在调用其方法之前,先给它几毫秒进行初始化。

答案 1 :(得分:1)

我发现jQuery.getScript()对此很有效。 Documentation here

在html页面中包含<script>标记,我只是在js文件中包含以下行:

jQuery.getScript( "https://apis.google.com/js/api.js", handleClientLoad );

您可能需要对模块的结构方式稍作调整,但我认为这比将参数传递到<script>标签更容易(至少我发现它更容易)。