[英]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>
问题:
是否可以从 client.js 的 onload 调用module.handleClientLoad
?
追加onload
并从脚本文件调用 function 似乎草率和突兀,不是吗? 有没有更清晰的方法来了解 client.js 何时加载?
你有没有试过调试器,你确定 module. 触发回调时是否存在 hanfleClientLoad?
您可以轮询是否存在 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.