我正在尝试使用bootstrap-rails gem在我的rails应用程序中包含bootstrap rails来使bootstrap-tour工作。

我已经看到很多其他问题,这些问题可以通过清除本地存储来解决,而我已经尝试过该修复程序,但无济于事。我的问题是不同的是,当它到达init函数时会引发错误。

TypeError: tour.init is not a function at HTMLBodyElement.ideasTour

message
:
"tour.init is not a function"
stack
:
"TypeError: tour.init is not a function


我的cofeescript被编译为与上的示例匹配的js
bootstrap tour

介绍咖啡

ideasTour = ->
    console.log 'function was called'
    tour = new Tour({
        steps:[
        {
            element: "#step1"
            title: 'Ideas'
            content: 'Ideas are the encapsulating class...'
        }
        {
            element: "#step2"
            title: "Create a new Idea"
            content: 'lets create a new Idea, click on the add button to start.'
        }
    ],
    debug: true,
    storage: false
    })
    console.log 'options set initializing...'
    tour.init()
    console.log 'initialized starting...'
    tour.start(true)
    console.log 'called start'

$ ->
    $('body').on('tour', ideasTour)


我的application.js

//= require jquery
//= require jquery_ujs
//= require best_in_place
//= require bootstrap
//= require bootstrap-tour
//= require turbolinks
//= require_tree .
$ = jQuery;


任何帮助是极大的赞赏。

最佳答案

看来这是一个较旧的问题,但是这是由于在将Bootstrap-tour库加载到页面上之前尝试使用tour.init()引起的。确保对bootstrap-tour.js或bootstrap-tour-min.js的引用。

尽管将javascript库引用放置在标签上方页面底部是一种很好的做法,但是请尝试将库(如果不使用独立的bootstrap-tour,则放在jQuery库中),看看是否可以消除此错误“竞赛条件”。

如果您使用的是jquery,则可以通过将tour.init()调用放入其中来利用jQuery(document).ready函数,以便它在尝试调用之前等待所有页面资源都加载到DOM中。它。

关于javascript - Bootstrap-tour tour.init不是函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41231701/

10-12 18:39