0

我已经下载了一个外部脚本并将其放在我的供应商/资产/javascripts 中,然后将其包含在 application.js(显示脚本)中

//= require jquery
//= require jquery_ujs
//= require reveal
//= require mustache
//= require_tree .

脚本显然不会等待 DOM 加载,因为我在控制台中出现了上述错误。在将 JS 设置为松散之前,如何确保 body 已加载?

EDIT Reveal 在它自己的文件中初始化,reveal_init.js.coffee

$ ->
  Reveal.initialize
    controls: true,
    progress: false,
    history: true,
    loop: false,
    mouseWheel: true,

    # Apply a 3D roll to links on hover
    rollingLinks: true,
    theme: 'default', 
    transition: 'page' # default/cube/page/concave/linear(2d)
4

1 回答 1

0

您可以在 jQuery中使用.ready() :

$(document).ready(function() {
  Reveal.initialize({
    opt1: "value",
    opt2: "value"
  });
});

或者,在使用 CoffeeScript 时:

$ -> 
  Reveal.initialize
    opt1: "value"
    opt2: "value"

如果您仍然收到对象不存在的错误,您可能想尝试$(window).load()事件,该事件甚至比ready()事件更晚触发。

如果这仍然不起作用,并且您确定该元素存在并且应该可以工作,请尝试在加载脚本时添加延迟,使用setTimeout,或使用 Chrome/Safari 中的 Web 开发人员工具或 Firefox 中的 Firebug 手动触发脚本.

如果这仍然不起作用,您现在可以排除脚本加载过早的可能性,您应该开始研究其他可能性。

于 2012-06-26T20:32:58.373 回答