當在module_init()函數中調用drupal_add_js()時,加載的JS庫是否具有與其他模塊訪問庫有關的全局存在?module_init()中的drupal_add_js() - 將JS庫加載到所有模塊中?
例子:
假設有兩個模塊 - 每個需要一個JS庫,並且兩個JS庫具有完全相同的名稱。 JS庫存在於它們各自的模塊目錄中。雖然兩個JS庫的命名是相同的,但它們的內容不同,因此每個模塊都不能使用其他模塊的JS庫 - 這樣做會導致模塊失敗。
IF實際上JS庫裝載有遵循上述方法的全球業務將因此產生的問題。當第一個模塊被加載時,其JS庫將被全局應用於所有模塊。接下來,第二個模塊被加載,其JS庫將被全局應用於所有模塊。在這個階段,兩個模塊都處於活動狀態。由於JS庫的命名相同,因此第二個模塊的JS庫將有效替換第一個模塊的JS庫,從而導致第一個模塊失敗。
謝謝!
據我所知,這兩個JS腳本文件是全局訪問。那麼,如果兩個JS腳本文件都具有相同名稱但具有不同行爲的函數,會發生什麼?假設兩個模塊都調用一個名爲foobar的函數,並且在兩個JS腳本文件中都存在函數foobar。但是,每個JS腳本文件中的foobar行爲都是不同的,因此每個模塊都不能使用其他模塊的foobar函數 - 這樣做會導致模塊失敗。在這種情況下,根據你的解釋,函數foobar將是模糊的,其中一個模塊會失敗 - 這是正確的嗎? – kaspnord 2012-01-31 19:54:02
當兩個加載的文件定義了相同的函數時,它發生在JavaScript中通常發生的事情:從上次加載的文件定義的函數覆蓋之前定義的函數。顯然,在這種情況下,其中一個模塊無法正常工作,因爲它的JavaScript代碼沒有執行它期望的功能。 – kiamlaluno 2012-01-31 20:44:57
感謝您的澄清! – kaspnord 2012-01-31 23:09:55