繁体   English   中英

调用 function onload 外部脚本

[英]call a function onload of external script

我正在玩 Google Drive API,并注意到他们正在调用 client.js 的handleClientLoad function 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));

然后我假设我可以通过执行module.handleClientLoad来调用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并从脚本文件调用 function 似乎草率和突兀,不是吗? 有没有更清晰的方法来了解 client.js 何时加载?

  1. 你有没有试过调试器,你确定 module. 触发回调时是否存在 hanfleClientLoad?

  2. 您可以轮询是否存在 gapi.client 作为全局 object。在调用其方法之前给它几毫秒的初始化时间。

我发现jQuery.getScript()对此非常有效。 文档在这里

我没有在 html 页面中包含<script>标记,而是在我的 js 文件中包含了以下行:

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

它可能需要对您构建模块的方式进行轻微调整,但我认为这比将参数传递给<script>标记更容易(至少我发现它更容易)。

我知道这很旧,但我一直在搞这个,因为这与我正在学习的考试中的一个问题有关。 调用脚本时可以像这样使用 onload:

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

对于任何想知道为什么这行不通的人:

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

这是因为带有“src=”的脚本标签之间的任何代码都将被忽略。

而且我不确定为什么在调用外部脚本的脚本标记中使用 onload= 比将?onload=module.handleClientLoad 附加到源代码更迟钝? 但那只是我。

最后,我不确定为什么这是测试题,因为根据搜索,这似乎不是任何人都会做的事情。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM