【问题标题】:Insert javascript call inside <body onLoad=function()> in RAILS在 RAILS 中的 <body onLoad=function()> 中插入 javascript 调用
【发布时间】:2009-11-26 20:08:50
【问题描述】:

我在轨道上很n00b。问题很简单,我想知道如何在 onLoad 事件的 body 标记内调用 javascript 函数。

我问这个是因为在视图中我找不到任何身体或头部标签(就像它们是在其他地方生成的一样)。

谢谢

【问题讨论】:

    标签: javascript ruby-on-rails onload onload-event


    【解决方案1】:

    您无需修改​​ body 标记即可将 Javascript 函数与 onload 相关联。您可以在外部 Javascript 文件中将函数分配给 window.onload,而不是使用主体上的 onload 属性。

    还有更高级的方法,使用事件监听器来做同样的事情(在页面加载时触发函数),这将允许在页面加载前一点/一段时间在 DOM 就绪时添加多个监听器函数或触发函数。只设置 window.onload 是最简单的方法,并且会让你的 Javascript 不显眼。

    【讨论】:

      【解决方案2】:

      bodyhead 标签通常会在其中一种布局中定义。布局默认位于app/views/layouts

      【讨论】:

      • 我注意到布局文件中的 head 和 body 标签,但是......与我的视图相关的布局是什么......我的意思是,我看不到布局之间的一对一关系和意见。我如何以及在哪里可以将布局与视图联系起来。谢谢
      • 有一个关于这个主题 (guides.rubyonrails.org/layouts_and_rendering.html) 的不错的 Rails 指南。我建议您检查一下,因为它解释了布局/视图/部分渲染背后的所有“魔力”。
      【解决方案3】:

      Eric Bréchemier 和 mtyaka 都是正确的。

      另一种方法(如果您需要将自定义元素添加到基于每个视图指定的页眉/页脚中,您需要使用 yield 块执行类似的操作

      这是一个允许在每页基础上覆盖标题的示例,但同样的技术也适用于在 HTML 头部标签中设置 script 标签。

      app/views/layouts/posts_layout.html.erb

      <html>
        <head>
          <title><%= yield(:page_title) || "My awesome site"%></title>
        </head>
        <body><%= yield %> </body>
      </html>
      

      app/views/posts/index.html.erb

      <%= content_for :page_title, "post listing" %>
      <h1>Here are your posts...</h1>
      

      【讨论】:

      • 非常感谢您的评论。我一直在阅读有关 content_for 标记的信息。非常有趣,但在我看来,我不能以这种方式添加属性和事件,可以吗?
      猜你喜欢
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 2012-04-24
      • 1970-01-01
      • 2021-02-14
      • 2011-08-04
      • 2015-01-25
      • 1970-01-01
      相关资源
      最近更新 更多