【问题标题】:Pause code until it's in the browser window暂停代码,直到它在浏览器窗口中
【发布时间】:2013-10-03 08:47:19
【问题描述】:

我正在使用一个名为“typed”的 jquery 插件,它一个接一个地输入句子。 这很好,但我想知道是否可以暂停代码,直到文本区域在浏览器窗口中可见?

因为我希望人们能够看到输入的第一句话,但目前您会错过第一句话,因为它在页面顶部不可见。

这是我正在处理的页面:http://jakdesign.webflow.com/

这是html头部的代码:

$(document).ready(function( $ ) {
    $("#hero-text").typed({
        strings: ["First sentence.", "Second sentence."],
        typeSpeed: 0
    });
});

这是插件: https://rawgithub.com/morr/jquery.appear/master/jquery.appear.js

【问题讨论】:

  • typed和appear插件有什么关系。

标签: javascript jquery typed


【解决方案1】:

您想在元素可见时初始化 typed ,不是吗?然后尝试这样的事情:

$(document).ready(function( $ ) {
    $("#hero-text").one("appear", function() {
        $(this).typed({
            strings: ["First sentence.", "Second sentence."],
            typeSpeed: 0
        });
    });
});

当然,这需要jQuery.appear插件。

【讨论】:

  • +1 for this 实际上可以立即解决问题。我之前没有注意到 Op 已经在使用显示插件。
  • .one(?不应该是.on吗?
  • @AaronDigulla 不,one() 最多执行一次处理程序:documentation
  • 但是使用 window.onload 将完全避免.. jQuery.appear 插件。为什么要在我们可以简单地避免它们的地方使用包装器(根据方便)......我是这样认为的
  • @DarkHorse 但是只有当元素变得可见时,它才会启动键入插件,如 OP 请求。
【解决方案2】:

document ready 在 DOM 加载时被触发,因此所有小部件属性都没有被完全检索到。

window onload 等待页面中的资产完全加载 - 因此标签的信息和属性完全可用。

所以这对你有用:

function typed() {
    $("#hero-text").typed({
        strings: ["First sentence.", "Second sentence."],
        typeSpeed: 0
    });
}

    <body onload="typed()">

或 在脚本中这样做

window.onload = function(){
    $("#hero-text").typed({
            strings: ["First sentence.", "Second sentence."],
            typeSpeed: 0
        });
}

【讨论】:

  • 更好的 jQuery 语法:$(window).on("load", function(){...});。另见api.jquery.com/load-event
  • 我有时会尽可能避免使用 jQuery.. 像 window.onload 这样的简单函数。它只是window.onload的包装器.. :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-04
  • 1970-01-01
  • 2015-07-02
  • 2021-12-09
  • 1970-01-01
  • 1970-01-01
  • 2019-03-17
相关资源
最近更新 更多