簡體   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