【问题标题】:Loading remote JavaScript file in a page在页面中加载远程 JavaScript 文件
【发布时间】:2010-02-09 19:37:37
【问题描述】:

我有一个简单的页面,我在其中加载了几个远程 JavaScript 文件(我需要它们并且不能有本地副本)。

我加载的脚本类似于这些:

<script type="text/javascript" src="http://mymachine/donald/script1.js"></script>
<script type="text/javascript" src="http://mymachine/donald/script2.js"></script>

在页面的第一次加载中,我收到了几条关于与这两个脚本相关的对象的错误消息。所以我认为页面在下载和执行脚本之前被渲染。如果我尝试重新加载同一页面(使用脚本加载缓存),我不会收到任何错误。

但是,如果我尝试将每个文件下载两次,即使浏览器的缓存是干净的,我也不会收到任何错误。我认为这是一种不好的方法,但我不知道任何替代方法。

是否有一个标签允许我停止页面的呈现,除非脚本被下载?还是浏览器的选项? (我不喜欢这种选择,但它可能只有一个)。我只需要支持 Internet Explorer 7。

我已经部分解决了使用类似于这个的 js 的双重加载:

但它是正确的?

<script type="text/javascript" src="http://mymachine/donald/script1.js"></script>
<script type="text/javascript" src="http://mymachine/donald/script1.js"></script>
<script type="text/javascript" src="http://mymachine/donald/script2.js"></script>
<script type="text/javascript" src="http://mymachine/donald/script2.js"></script>

这些库不相互依赖。事实上,如果交替加载 script1 和 script2,错误仍然存​​在。

【问题讨论】:

    标签: javascript html internet-explorer-7


    【解决方案1】:

    这很奇怪,我认为 &lt;head&gt; 中的 &lt;script&gt; 标记确实会阻止页面,直到它们被下载。

    它们是您&lt;head&gt; 部分中的第一个脚本吗?它们至少需要出现在任何依赖它们的 JavaScript 之前。

    【讨论】:

    • 是的,它们是我头部分的第一个脚本
    • 好的。那么页面上依赖这些文件的其他 JavaScript 是否在 &lt;body&gt; 部分中?
    【解决方案2】:

    您应该尝试将这些标签推到页面上非常低的位置,就在&lt;/body&gt; 之前。如果您只需要支持 IE7,这可能会解决您遇到的问题。

    【讨论】:

    • 但还有其他 javascript 文件正在使用这些文件。所以它们必须是第一个被加载的。
    • 那么也许你应该把它们按重要性顺序放在底部。
    【解决方案3】:

    如果您正在从这些文件执行脚本 - 等待文档的加载事件...

    【讨论】:

    • 我无法触摸页面的其余部分,只能触摸头部。
    • 这没有提供问题的答案。要批评或要求作者澄清,请在其帖子下方发表评论。
    • @devundef 这听起来像是一个答案。他不是要求提供更多信息,而是提供问题的可能解决方案。
    猜你喜欢
    • 1970-01-01
    • 2011-06-20
    • 1970-01-01
    • 2012-06-22
    • 2018-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-16
    相关资源
    最近更新 更多