【问题标题】:Scripts are not loading after the page transition in Barba.jSBarba.jS 中的页面转换后脚本未加载
【发布时间】:2021-12-29 08:24:27
【问题描述】:

所以我有一个索引文件,其中包含很少的 js 文件,例如 Gsap 和 Barba JS。但是我有一个内页,其中包含一些额外的 js 文件,例如 locomotive.js 和 OWLcarousel.js,请注意这两个 Js 文件(locomotive.js 和 OWLcarousel.js)不包含在索引页面中,因为它们不是必需的。问题是内页在完成索引页面转换后打开,但没有加载这两个 JS 文件(locomotive.js 和 OWLcarousel.js)。结果,机车滚动和 OWL 旋转木马都不起作用。但是,如果我刷新一次内页,那么这两个 Js 文件(locomotive.js 和 OWLcarousel.js)正在加载并且一切正常。那么如何在 Barba.Js 中加载内页的 JS 文件呢?

更新: 我创建了一个最小的演示,如果单击主页上的标题文本并导航到内部,您可以看到内部页面没有加载机车的 JS 和 CSS 以及 OWL 轮播。但是如果刷新页面,那么机车和猫头鹰旋转木马在内页都可以正常工作。如何解决这个问题?我已将建议的更改添加到 JS 文件 (https://bootstrap-awesome.com/barba-test1f/js/main-test.js) 演示链接:https://bootstrap-awesome.com/barba-test1f/index-test.html

所以我尝试以以下相同的格式加载其他 JS 文件,但没有任何反应。有人可以指导我吗?

barba.init({
  views: [{
        namespace: 'home',
        beforeEnter({ next }) {

        // load your script
        let script = document.createElement('script');
        script.src = '<script src="https://cdn.jsdelivr.net/npm/locomotive-scroll@3.5.4/dist/locomotive-scroll.min.js"></script>'; 
script.src = '<script src="js/owl/owl.carousel.js"></script>';
        next.container.appendChild(script);
        }, 
    }],

更新 @wouch

以下是我尝试过但仍然无法正常工作的方法。另外,如何加载机车外部CSS?

JS:bootstrap-awesome.com/barba-test1f/js/main-test.js

演示:https://bootstrap-awesome.com/barba-test1f/index-test.html

views: [{
    namespace: 'home',
    beforeEnter({ next }) {
      // Script URLs to load
      let pageScriptSrcs = [
        'https://cdn.jsdelivr.net/npm/locomotive-scroll@3.5.4/dist/locomotive-scroll.min.js',
        'js/custom-scroll.js',
        'js/owl/owl.carousel.js',
        'js/owl/owl-custom.js'
      ]
      
      pageScriptSrcs.forEach(scriptSrc => {
        let script = '<script src="' + scriptSrc + '"><\/script>';
        console.log(script);
        next.container.appendChild(script);
      })
    }
    },
    {
    namespace: 'projdetailpage',
    beforeEnter({ next }) {
      // Script URLs to load
      let pageScriptSrcs = [
        'https://cdn.jsdelivr.net/npm/locomotive-scroll@3.5.4/dist/locomotive-scroll.min.js',
        'js/custom-scroll.js',
        'js/owl/owl.carousel.js',
        'js/owl/owl-custom.js'
      ]
      
      pageScriptSrcs.forEach(scriptSrc => {
        let script = '<script src="' + scriptSrc + '"><\/script>';
        console.log(script);
        next.container.appendChild(script);
      })
    }

  }],

【问题讨论】:

  • 路径可能有问题。如果尝试加载文件但给出 404,您是否检查了开发人员工具中的网络选项卡? ...您能否添加到您的问题中,如何将这两个文件加载/添加到您的项目中。可能与此有关。
  • @zeth 添加了来自网络控制台的错误截图。你能看看吗?但是,如果我刷新页面而不是在页面从主页转换到内页之后,一切正常。
  • 看起来您正在第 341 行创建一个 &lt;script&gt; 元素,然后将该元素的脚本源设置为 locomotive.jsOWLcarousel.js 嵌入中的所有内容。您是否尝试过将这些脚本中的每一个都附加到 next.container 中?
  • @wouch 你能告诉我怎么做吗?

标签: javascript html jquery barbajs


【解决方案1】:

我会尝试这样的事情,在数组中添加所需的脚本,然后循环遍历每个脚本并构建 &lt;script src="..."&gt;&lt;/script&gt; 字符串并附加到 next 容器。

barba.init({
  views: [{
    namespace: 'home',
    beforeEnter({ next }) {
      // Script URLs to load
      let pageScriptSrcs = [
        'https://cdn.jsdelivr.net/npm/locomotive-scroll@3.5.4/dist/locomotive-scroll.min.js',
        'js/owl/owl.carousel.js'
      ]
      
      pageScriptSrcs.forEach(scriptSrc => {
        let script = '<script src="' + scriptSrc + '"><\/script>';
        console.log(script);
        next.container.appendChild(script);
      })
    },
  }],
})

【讨论】:

  • 我创建了一个最小的演示,如果单击主页上的标题文本并导航到内部,您可以看到内部页面没有加载机车的 JS 和 CSS 以及 OWL 轮播。但是如果刷新页面,那么机车和猫头鹰旋转木马在内页都可以正常工作。如何解决这个问题?我已将建议的更改添加到 JS 文件 (bootstrap-awesome.com/barba-test1f/js/main-test.js) 演示链接:bootstrap-awesome.com/barba-test1f/index-test.html
  • 由于包含beforeEnter ({})views 仅指'home' 命名空间,因此该脚本将仅在该页面上运行。您可能希望将 JS 添加到您希望它运行的每个命名空间,或使用 barba.js hooks
  • 哇——所以你的意思是说在这种情况下,像下面这样的内页有一个单独的名称空间,对吧?那么机车CSS也加在那里?意见:[{命名空间:'projdetailpage',beforeEnter({下一个}){让pageScriptSrcs = ['cdn.jsdelivr.net/npm/locomotive-scroll@3.5.4/dist/…','js/owl/owl.carousel.js'] pageScriptSrcs.forEach(scriptSrc => {让脚本= '
  • 嗨哇,我已经更新了 js 文件 (bootstrap-awesome.com/barba-test1f/js/main-test.js) 但脚本仍然没有加载。你能告诉我我在这里犯了什么错误吗?还有,这里怎么加载机车CSS?
猜你喜欢
  • 2019-02-03
  • 2020-09-14
  • 1970-01-01
  • 1970-01-01
  • 2011-09-02
  • 1970-01-01
  • 2021-07-29
  • 2013-05-19
相关资源
最近更新 更多