javascript - 如何仅在延迟的 Javascript 外部文件加载后才执行 Javascript?

标签 javascript resources external onload

我想推迟加载外部 Javascript 文件,直到页面加载完毕(而且我不想在无法加载这些外部资源时阻止渲染)。所以我有这条线

<script type="text/javascript" src=“//external.otherdomain.com/path/js/myresoures.js" defer></script>

但是,当这个文件最终加载时,我想运行以下......

<script type="text/javascript">_satellite.pageBottom();</script>

但是,按原样,上面的代码可能会在脚本加载之前运行。如何仅在加载远程资源后运行上述(或任何)Javascript?请记住,如果外部资源未加载(例如超时),我不想运行 Javascript。

谢谢,-戴夫

最佳答案

这可以通过 onload 函数来实现。

你可以动态加载每个...这个例子是从MDN中提取的.它将在您调用的脚本上方插入您的外部资源 importScript()然后在加载后启动回调。

sSrc = 你的外部脚本,fOnload =回调

function importScript (sSrc, fOnload) {
  var oScript = document.createElement("script");
  oScript.type = "text\/javascript";
  oScript.defer = true;
  if (fOnload) { oScript.onload = fOnload; }
      document.currentScript.parentNode.insertBefore(oScript, document.currentScript);
  oScript.src = sSrc;
}

用法:

importScript("//external.otherdomain.com/path/js/myresoures.js", function () { _satellite.pageBottom(); });

或者如果 jQuery 是一个选项,使用 .getScript()像这样:

$.getScript( "//external.otherdomain.com/path/js/myresoures.js", function () {_satellite.pageBottom();} );

这些选项中的任何一个都可以在 <script> 中使用在页面末尾,正如他们所说,在折叠之后,确保首先加载整个 DOM。

关于javascript - 如何仅在延迟的 Javascript 外部文件加载后才执行 Javascript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35515045/

相关文章:

android - 如何在应用程序中使用蓝牙 GPS 模块?

javascript - 我可以将独立作用域和继承作用域结合起来吗?

maven - 如何在执行 maven-resources-plugin :copy-resources 时在 Maven 复制资源过程中失败,而不是跳过不存在的资源目录

java - Spring Rest API和无后缀的静态Web内容访问

javascript - 从另一个 HTML 页面获取数据

external - 如何指定 Yocto 使用哪个编译器工具链来构建图像?

javascript - 如何将参数作为函数传递并在单击按钮后调用它

javascript - 获取数字格式的字符串价格

javascript - 重命名 React Native 示例应用程序

ruby-on-rails-3 - 为什么我的嵌套资源中出现 "no route matches [POST]"?