【问题标题】:fullpage.js with require.js IScroll not found未找到带有 require.js IScroll 的 fullpage.js
【发布时间】:2016-08-24 13:48:00
【问题描述】:

我正在尝试使用 require.js 加载 fullpage.js。因此,我的配置定义了一条路径:

    "fullpage":[
        "lib/jquery.fullPage.min"
    ],

稍后在 main.js 中,我需要包含业务逻辑的 start.js。

在 start.js 中,我定义了依赖项并初始化了整页

define(["jquery","fullpage","nerveSlider","fluidbox"], function($,fullpage,nerveSlider,fluidbox) {
...
        $('#fullpage').fullpage({
            anchors: ['shop', 'about', 'details', 'footer'],
            sectionsColor: ['#000000', '#94c9b7', '#6e8394','#333'],
            navigation: true,
            controlArrows: true,
            fixedElements: '.logo',
            loopHorizontal: false,
            navigationPosition: 'left',
            responsiveWidth: 900,
            scrollOverflow: true
        });

因为我正在使用选项 'scrollOverflow: true' fullpage.js 需要 scrolloverflow 库:https://github.com/alvarotrigo/fullPage.js/#including-files

我在 main.js 中定义为 deb

    "scrolloverflow":[
        "lib/scrolloverflow.min"
    ],
    ...
    fullpage: {
        deps: ['scrolloverflow']
    }

很遗憾,我收到控制台错误提示

jquery.fullPage.min.js:8 Uncaught ReferenceError: IScroll is not defined

我做错了什么?换句话说,我怎样才能让 scrolloverview 中的 IScroll 方法可用于 fullpage.js?

【问题讨论】:

  • 听起来您使用的不是最新的 fullpage.js 版本?确保您使用最新的 2.8.4。
  • 阿拉瓦罗,感谢您的回复!版本是 2.8.4 如果我在 require <script data-main="js/main" src="js/lib/scrolloverflow.min.js"></script> <script data-main="js/main" src="js/require.js"></script> 之前包含滚动溢出,似乎我在 require.js 上做错了,一切正常。我认为 shim 依赖有问题,或者可能是命名空间问题。
  • 你能换成未缩小的版本,让我知道问题发生在哪一行吗?
  • 好吧,问题显然是 fullpage.js 是在 scrolloverflow.min.js 之前加载的。所以改变顺序应该可以解决它。

标签: requirejs fullpage.js


【解决方案1】:

来自shim doc

为不使用 define() 声明依赖项和设置模块值的旧的传统“浏览器全局”脚本配置依赖项、导出和自定义初始化。

fullpage.jsscrolloverflow.js 都是 AMD 模块。

您不能对这些模块使用 shim

您在 define 函数中定义模块的关系。 fullpage.js 需要在全局范围内定义 IScroll。你需要一个技巧:加载 IScroll 并在全局范围内定义它:

define(["jquery","scrolloverflow","fullpage"], function($, IScroll) {
  window.IScroll = IScroll;
  ...
});

【讨论】:

  • 嗨 Tomasz,这就是我最初尝试的方法:define(["jquery","fullpage","scrolloverflow","nerveSlider","fluidbox"], function($,fullpage,scrolloverflow,nerveSlider,fluidbox) { ... 但错误消息保持不变:(Uncaught ReferenceError: IScroll is not defined
  • 您好 Tomasz,非常感谢您的承诺。你的想法是让 IScroll 全球化,对吧?不幸的是,它保持不变。控制台说。 IScroll 未定义。Uncaught ReferenceError: IScroll is not defined
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-06
  • 1970-01-01
  • 1970-01-01
  • 2018-06-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多