当前位置: 首页 > 知识库问答 >
问题:

tippy.js工具提示中的延迟加载图像?

那利
2023-03-14

我正在使用tippy.js生成工具提示。一切都很好,但我有分配的工具提示每个不同的图像内容加载。为了减少加载时间,我想在工具提示可见时将图像延迟加载到apear。

我知道tippy.js有一个内置函数来调用AJAX内容(https://atomiks.github.io/tippyjs/ajax/)-但是我想要加载的内容是超文本标记语言,我不想为每个工具提示编写单独的javascript。理想情况下,以某种方式获取我正在悬停的特定提示的img scr,并调用它来加载onShow(实例)~即获取('$(this)。查找("img")。数据("src");)。我尝试了一些变体,但没有任何效果。

下面是一个代码笔(不带)延迟加载图像:https://codepen.io/jinch/pen/aboNOvP?editors=1010

我曾尝试在他们的网站上操作AJAX示例,但没有成功(见下文)。

tippy('body .tippy', {
            theme: 'google',
            touchHold: true,
            hideOnClick: false,
            interactive: true,
            placement: 'left',
            distance: 20,
            arrow: true,
            animateFill: false,
            animation: 'shift-away',

              onShow(instance) {
                if (instance.state.ajax === undefined) {
                  instance.state.ajax = {
                    isFetching: false,
                    canFetch: true,
                  }
                }
                if (instance.state.ajax.isFetching || !instance.state.ajax.canFetch) {
                  return
                }

                fetch('$(this).find("img").data("src")')
                  .then(response => response.blob())
                  .then(blob => {
                  })
                  .catch(error => {
                    // ...
                  })
                  .finally(() => {
                    instance.state.ajax.isFetching = false
                  })
              },
              onHidden(instance) {
                instance.setContent('Loading...')
                instance.state.ajax.canFetch = true
              },
          })

理想的结果是仅在调用时加载图像,以减少页面的初始加载时间。

共有1个答案

陆洛城
2023-03-14

感谢@atomiks,您可以在这里找到答案:https://github.com/atomiks/tippyjs/issues/562#issuecomment-521650755

 类似资料:
  • 该站点有带有动态内容的工具提示的链接。我正在使用jquery UI工具提示来显示它们。我不希望每次用户不小心将光标放在链接上时,都显示工具提示。我想要显示工具提示只有当它延迟光标在链接上几秒钟。这应该像Gmail一样,当你悬停在发件人的名字上时,你会看到关于他的信息(见图)。 我需要工具提示,用户可以与之交互,所以我使用了这段代码(感谢Antonimo https://stackoverflow.

  • Flask 通常配合装饰器使用,装饰器使用非常简单,而且使您可以将 URL 和处理它的函数 放在一起。然而这种方法也有一种不足: 这就意味着您使用装饰器的代码必须在前面导入, 否则 Flask 将无法找到您的函数。 这对于需要很快导入的应用程序来说是一个问题,这种情况可能出现在类似谷歌的 App Engine 这样的系统上。所以如果您突然发现您的引用超出了这种方法可以处理 的能力,您可以降级到中央

  • 我在玩JavaFX的< code>Tooltip。我意识到对我个人来说,悬停在某个东西上和工具提示实际出现之间的延迟太长了。从API中可以看出: 通常,当鼠标移动到控件上时,工具提示被“激活”。工具提示从“激活”到实际显示之间通常会有一些延迟。细节(如延迟量等)留给皮肤实现。 经过进一步调查,我无法找到任何控制延迟的可能性。JavaFX CSS Reference没有关于延迟时间的信息,的运行时评

  • 问题内容: 我正在开发一个eshop。在基于类别的产品页面上,我放置了一些基于javascript的过滤器。但是,如果类别具有很多产品,则会出现问题。该链接具有与我相似的功能… 这个页面多么缓慢,却超过2mb !!! 对我来说,每个产品都需要一半的K字节,但是图像是个问题。.因此,我正在寻找如何延迟加载图像的方法。由于与该网站不同,我的页面具有分页功能,因此我认为加载仅对页面可见的图像是一种解决方

  • 描述 (Description) 延迟加载可应用于图像,背景图像和淡入效果,如下所述 - 对于图像 要在图像上使用延迟加载,请按照给定的步骤进行操作 - 使用data-src属性而不是src属性来指定图像源。 将类lazy添加到图像。 <div class = "page-content"> ... <img data-src = "image_path.jpg" class = "l

  • 我试图使用jQuery懒惰加载在我的Laravel/Vue项目,但我正在努力让图像出现在我的Vue组件。我有以下img块,我认为会工作: 我确实在这里发现了另一个问题-Vue.js模板中的静态图像src-但是当我尝试该方法时,我得到了这样的结果: 因此,我切换回v-bind方法,但我得到的只是一个带有灰色边框的白色框-没有图像。但是,如果我在src属性上使用v-bind,我可以正确地看到图像。 我