1

如果有人可以对以下情况提出新的想法,如果之前有人问过,那就抱歉了。我找不到类似的情况。

我有一个我无法控制的动态生成的页面。我需要在其中添加多个 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- 通常,如果将 a <script src="some.js" /> 添加到 html 中但从未在页面中使用,它会在用户网络浏览器上下载吗?

2-如果我<script src="some.js" />在同一个主页上添加不同的 iframe,它会为每个 iframe 下载还是会检测到它已经加载?

3-如何解决不放在<script src>主页上但阻止在所有 iframe 上下载并仅下载第一个的问题?iframe 是动态构建的,很难放置一个标志来检查它是否已经为任何 iframe 加载。

我需要防止在用户端加载两次......这意味着不要在用户浏览器上下载文件两次。但是,使用上面的 iframe,我希望它执行两次.. 是的。

非常感谢!

4

3 回答 3

4

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

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

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

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

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

于 2013-08-31T15:39:08.957 回答
2

我认为这个问题更多地与 Highcharts 如果第二次执行会引发错误这一事实有关。

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

于 2013-08-31T16:13:22.100 回答
0

1- html 页面上的任何内容都将至少加载一次,除非您使用某些代码阻止它。

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

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

于 2013-08-31T15:25:55.467 回答