Rails JavaScript 包含 TypeError:“null”不是一个对象(评估 'document.

Rails JavaScript include TypeError: 'null' is not an object (evaluating 'document.body.style')

本文关键字:评估 一个对象 document TypeError 包含 JavaScript null Rails      更新时间:2023-09-26

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

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

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

编辑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)

你可以在 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 手动触发脚本。

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