如果有人能够对下面的情况提出新的想法会很好,如果有人问过,那就很抱歉。我找不到类似的情况。
我有一个动态生成的页面,我无法控制。我需要在其中添加多个iframe并加载highcharts。 test.html的代码:
<html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script src="http://code.highcharts.com/highcharts.js"></script>
<script src="http://code.highcharts.com/modules/exporting.js"></script>
</head>
<body>
<div id="container" style="min-width: 310px; height: 400px; margin: 0 auto"></div>
<script>
....
all.html的代码:
<html>
<iframe id="one" src="test.html"></iframe>
<iframe id="two" src="test.html"></iframe>
</html>
问题:
1-一般来说,如果一个
<script src="some.js" />
被添加到html但从未在页面中使用过,它会在用户网页浏览器上下载吗?
2-如果我在同一主页上的不同iframe中添加<script src="some.js" />
,是否会为每个iframe下载,否则会检测到它已经加载了?
3-如何解决不将<script src>
放在主页上但阻止在所有iframe上下载并首先下载的问题? iframe是动态构造的,并且很难设置一个标志来检查它是否已经为任何iframe加载。
我需要防止在用户端加载两次......这意味着不要在用户浏览器上下载文件两次。但是,使用上面的iframe,我希望它执行两次..是的。
非常感谢!
答案 0 :(得分:3)
按顺序回答你的问题......
页面上没有“使用”脚本标签,如果脚本标签出现在html中,该文件将被下载(或从缓存中检索)并执行。
如果您有多个指向同一URL的脚本标记,则该文件只会下载一次(然后缓存),但会多次执行(每个脚本标记一次)。
目前还不清楚你是否理解加载和执行脚本之间的区别。如果您只想避免重复加载,请放松,浏览器已覆盖。如果你想避免重复执行,你将需要为该逻辑编写代码,在脚本中设置一个标志,只有在尚未设置的情况下才运行。所以,some.js可能有:
if(!window.scriptHasRun){ window.scriptHasRun = true; //在这里做一些有用的事情,只做一次。 }
答案 1 :(得分:1)
我认为这个问题与Highcharts第二次执行时会抛出错误的事实更为相关。
他的顶级页面包含highcharts库,因此,当iFrame导航到同时包含库的新页面时,会抛出错误并且图表会失败...
答案 2 :(得分:0)
1-无论html页面上的内容是否会加载至少一次,除非您使用某些代码阻止它。
2-缓存仅对图像自动工作,如果它是ajax或其他什么,其余的可能会再次加载,当然也取决于脚本。
3-你可以使用html5的本地缓存功能,非常容易实现,如果你正在使用json对象,只需将它们排成一行并在任何你想要的地方迭代。