簡體   English   中英

有沒有辦法從外部文件調用 onload 內部定義的函數

[英]Is there a way to call function defined inside onload from an external file

以下是基於場景創建的示例代碼。 showData() 函數是在 javascript 加載函數中定義的。 我想通過單擊按鈕從另一個文件中調用 showData()。 我知道如果 showData 是全局的,這會起作用。 無法將函數設為全局,因為在這種情況下它是動態生成的代碼。 無論如何,JS 中是否允許調用此類函數?

 // Not possible to change the structure of this file as its coming dynamically window.addEventListener("load", function() { showData(); // 1st time call function showData() { console.log('starting execution') } }); // Calling from another file showData(); // 2nd time call - not possible

不。

該函數在另一個函數中聲明。 它的作用域就是那個函數。

除非您更改該代碼以使其成為全局代碼,否則根本無法從包含函數外部訪問它。

如果代碼的結構無法更改,也許您可以嘗試將函數附加到全局window對象,例如:

window.addEventListener("load", function() {
  // attached to window
  window.showData = function() {
    console.log('starting execution')
  };

  window.showData(); // 1st time call
    
});

// Calling from another file
window.showData();

但是請確保第二次調用(來自其他文件)有一點延遲(請記住函數可用之前,必須先將 eventListener 附加到window )。

你可以試試:

// second call
setTimeout(function() {
    window.showData();
}, 1000);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM