我確定這個問題有不同的方法,我可以想一些。但我想聽聽其他人對此的看法。更具體地說,我已經構建了一個小部件,允許用戶從谷歌地圖地圖中選擇他們的位置。這個小部件按需顯示,並且可能每10分之一用於它所在的頁面。加載這個小部件(谷歌地圖js api)的依賴關係的最簡單方法是在頁面中放置一個腳本標籤。但是這會使瀏覽器請求每個頁面上的腳本加載。我正在尋找一種方法來讓瀏覽器只在用戶需要顯示小部件時才請求該腳本。根據需求加載javascript依賴關係
10
A
回答
17
function loadJSInclude(scriptPath, callback)
{
var scriptNode = document.createElement('SCRIPT');
scriptNode.type = 'text/javascript';
scriptNode.src = scriptPath;
var headNode = document.getElementsByTagName('HEAD');
if (headNode[0] != null)
headNode[0].appendChild(scriptNode);
if (callback != null)
{
scriptNode.onreadystagechange = callback;
scriptNode.onload = callback;
}
}
,並使用(我用SwfObject的爲例):
var callbackMethod = function()
{
// Code to do after loading swfObject
}
// Include SWFObject if its needed
if (typeof(SWFObject) == 'undefined')
loadJSInclude('/js/swfObject.js', callbackMethod);
else
callbackMethod();
0
您可以通過將<script src="...">
標記添加到DOM樹來動態加載腳本。
1
你可能想看看jsloader:http://www.jsloader.com/
1
蓋亞阿賈克斯做到這一點(我,因爲我知道實現它 - 我是最初的創始人),他們是GPL。所以除非你害怕他們會起訴你(他們現在正在訴訟我),你可能想看看他們是如何做到的。基本技術是在需要腳本時使用DOM注入腳本標記。雖然在加載完成之前,您必須注意不要引用此文件中的內容(這是異步發生的)
解決該問題(一種解決方案)是在文件底部添加一個變量並使用遞歸setTimeout調用來檢查變量是否被定義,並推遲代碼的執行,取決於正在加載的文件,直到定義了「JS文件的底部」變量爲止...
我們實際上還跟蹤了哪些文件在哪裏被附加文件名的哈希值轉換爲頁面上的隱藏字段。這意味着我們永遠不會結束,包括相同的文件,曾多次...
其實非常漂亮......
0
的谷歌AJAX API提供谷歌的的JavaScript API動態加載。還有的文檔中loading the Maps JS on-demand一個例子:
function mapsLoaded() {
var map = new google.maps.Map2(document.getElementById("map"));
map.setCenter(new google.maps.LatLng(37.4419, -122.1419), 13);
}
function loadMaps() {
google.load("maps", "2", {"callback" : mapsLoaded});
}
1
您可能要承擔樓盤現場看看一個真實的DEMO。
在演示頁面上,只需點擊鏈接[Xembảnđồ]即可查看按需加載的地圖。 僅當鏈接被點擊時才加載地圖,而不是頁面加載時,因此它可以減少頁面下載時間。
相關問題
- 1. StructureMap - 在需求插入依賴關係
- 2. 根據條件安裝依賴關係
- 3. 根據配置解決依賴關係
- 4. 需要依賴關係
- 5. 依賴關係:庫未加載錯誤
- 6. webpack不加載依賴關係
- 7. require.js加載依賴關係不正確
- 8. wp_enqueue_script不加載依賴關係
- 9. Berkshelf加載錯誤的依賴關係
- 10. 未加載JUnit依賴關係
- 11. 在Webpack中加載依賴關係組
- 12. 未加載Spring依賴關係?
- 13. 加載Jenkins中的依賴關係
- 14. Javascript Require.js依賴關係
- 15. JavaScript依賴關係管理
- 16. Javascript對象依賴關係
- 17. 依賴關係的nuget依賴關係
- 18. 在Maven 2中添加JavaScript依賴關係,如Java依賴關係?
- 19. Autofac OWIN web api - 基於請求的加載依賴關係
- 20. 僅在加載骨幹視圖時才需要依賴關係
- 21. Android aar文件所需的依賴關係不加載
- 22. 使用MEF的動態/按需加載XAP依賴關係?
- 23. 根據Maven中給定的條件添加依賴關係
- 24. Gradle:添加依賴關係
- 25. 添加maven依賴關係
- 26. 推薦的方式來「加載」JavaScript文件的依賴關係?
- 27. JavaScript的依賴關係不通過Ajax加載
- 28. 按照Require.js的依賴關係順序加載JavaScript
- 29. 數據庫依賴關係
- 30. 依賴關係
畢竟你寫了推廣它的博客垃圾,他們起訴你? – FlySwat 2008-11-22 01:28:15