[英]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.