我确定这个问题有不同的方法,我可以想一些。但我想听听其他人对此的看法。更具体地说,我已经构建了一个小部件,允许用户从谷歌地图地图中选择他们的位置。这个小部件按需显示,并且可能每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. 根据条件安装依赖关系
- 2. webpack不加载依赖关系
- 3. wp_enqueue_script不加载依赖关系
- 4. 未加载Spring依赖关系?
- 5. 依赖关系:库未加载错误
- 6. 未加载JUnit依赖关系
- 7. Javascript Require.js依赖关系
- 8. Javascript对象依赖关系
- 9. JavaScript依赖关系管理
- 10. 依赖关系的nuget依赖关系
- 11. Autofac OWIN web api - 基于请求的加载依赖关系
- 12. 仅在加载骨干视图时才需要依赖关系
- 13. 使用MEF的动态/按需加载XAP依赖关系?
- 14. 添加maven依赖关系
- 15. Gradle:添加依赖关系
- 16. 依赖关系
- 17. 离子v2 webpack加载程序不加载json依赖关系
- 18. 当使用knockoutjs加载数据时推迟依赖关系
- 19. NetBeans中的Maven项目:如何向“依赖关系”和“测试依赖关系”添加依赖关系?
- 20. Angular 2 peer依赖关系要求
- 21. JUNG:哪些库需要依赖关系?
- 22. 如何在jasmine中存根javascript依赖关系(jquery)?
- 23. iMX31依赖关系?
- 24. tools.jar依赖关系
- 25. Jira依赖关系
- 26. Maven依赖关系
- 27. WildFly依赖关系
- 28. Python依赖关系?
- 29. DLL依赖关系
- 30. asyntasks依赖关系
毕竟你写了推广它的博客垃圾,他们起诉你? – FlySwat 2008-11-22 01:28:15