防止源加载两次

时间:2013-08-31 15:11:17

标签: javascript jquery html iframe highcharts

如果有人能够对下面的情况提出新的想法会很好,如果有人问过,那就很抱歉。我找不到类似的情况。

我有一个动态生成的页面,我无法控制。我需要在其中添加多个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,我希望它执行两次..是的。

      
    
  

非常感谢!

3 个答案:

答案 0 :(得分:3)

按顺序回答你的问题......

  1. 页面上没有“使用”脚本标签,如果脚本标签出现在html中,该文件将被下载(或从缓存中检索)并执行。

  2. 如果您有多个指向同一URL的脚本标记,则该文件只会下载一次(然后缓存),但会多次执行(每个脚本标记一次)。

  3. 目前还不清楚你是否理解加载和执行脚本之间的区别。如果您只想避免重复加载,请放松,浏览器已覆盖。如果你想避免重复执行,你将需要为该逻辑编写代码,在脚本中设置一个标志,只有在尚未设置的情况下才运行。所以,some.js可能有:

    if(!window.scriptHasRun){   window.scriptHasRun = true;   //在这里做一些有用的事情,只做一次。 }

答案 1 :(得分:1)

我认为这个问题与Highcharts第二次执行时会抛出错误的事实更为相关。

他的顶级页面包含highcharts库,因此,当iFrame导航到同时包含库的新页面时,会抛出错误并且图表会失败...

答案 2 :(得分:0)

1-无论html页面上的内容是否会加载至少一次,除非您使用某些代码阻止它。

2-缓存仅对图像自动工作,如果它是ajax或其他什么,其余的可能会再次加载,当然也取决于脚本。

3-你可以使用html5的本地缓存功能,非常容易实现,如果你正在使用json对象,只需将它们排成一行并在任何你想要的地方迭代。