javascript - 如何组合两个init函数?

标签 javascript html

我一直在努力加快页面加载速度。我有这两个延迟脚本来最小化加载时间并提高性能。

问题是只有最后一个函数可以工作。前任。如果“imgDefer”位于最后,则只有图像会加载到首页上。与 'vidDefer' 相同,如果在最后,则仅加载视频而不会加载图像

我不知道如何结合这两个init()。我不擅长 JavaScript。 这些是代码:(我将这些代码放在页脚区域)

视频

<iframe src="" frameborder="0" allowfullscreen="allowfullscreen" data-src="https://www.youtube.com/embed/xxxxxx"></iframe>

图像

<img class="img-responsive" src="data:image/png;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" data-src="imagesrource" alt="">

视频脚本

function init() {
    var vidDefer = document.getElementsByTagName("iframe");
    for (var s = 0; s < vidDefer.length; s++) {
        if(vidDefer[s].getAttribute('data-src')) {
            vidDefer[s].setAttribute('src',vidDefer[s].getAttribute('data-src'));
        }
    }
}
window.onload = init;

图像脚本

function init() {
    var imgDefer = document.getElementsByClassName("img-responsive");
    for (var i = 0; i < imgDefer.length; i++) {
        if (imgDefer[i].getAttribute('data-src')) {
          imgDefer[i].setAttribute('src',imgDefer[i].getAttribute('data-src'));
        }
    }
}
window.onload = init;

最佳答案

基本上,听起来就像您希望能够在触发 window.onload 事件时运行多个函数。

您可以创建两个单独的函数,如下所示:

function runVideoScript() {
  var vidDefer = document.getElementsByTagName('iframe')
  // ...
}

function runImageScript() {
  var imgDefer = document.getElementsByClassName('img-responsive')
  // ...
}

然后您可以创建一个init函数。这样,两个函数都会从 init 函数中调用,并且 init 将在触发 window.onload 时被调用:

function init() {
  runVideoScript()
  runImageScript()
}

window.onload = init
<小时/>

在您当前的设置中,仅调用最后一个函数的原因是您将 window.onload 替换为另一个函数,并且基本上忽略了第一个函数。

关于javascript - 如何组合两个init函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57502891/

相关文章:

jquery - 基于 slider 内容的 DIV 高度在下一张幻灯片上折叠

javascript - 编写body元素以包含css类时如何访问浏览器本地存储

javascript - 将 Ajax 数据发布到 PHP REST 服务

javascript - document.write 样式表 if 语句永远为假

html - 防止包含跨度的直通

java - 连接到网站并保持 session ?

html - 无论视口(viewport)宽度如何,使图像在视口(viewport)中居中

javascript - 如何禁用 ionic 侧菜单上的拖动功能?

javascript - 在 javascript 上停止我的功能

javascript - 单击后折叠菜单打开并处于事件状态