首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript并不总是加载的,但它包含在head中

Javascript并不总是加载的,但它包含在head中
EN

Stack Overflow用户
提问于 2016-03-23 22:00:54
回答 1查看 67关注 0票数 0

我有一个Ruby on Rails项目,其中我使用了一个第三方库(editablegrid)。我将文件放在vendor/assets/javascripts中,并将该库包含在布局文件中,以供需要它的视图使用:

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<head>
  <title>Mcf</title>
  <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track' => true %>
  <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
  <%= javascript_include_tag 'dynamic_collections' %>
  <%= csrf_meta_tags %>
  <%= javascript_include_tag "editablegrid" %>
  <%= javascript_include_tag "editablegrid_editors" %>
  <%= javascript_include_tag "editablegrid_renderers" %>
  <%= javascript_include_tag "editablegrid_utils" %>
  <%= javascript_include_tag "editablegrid_validators" %>
</head>
  <body>


<%= yield %>

</body>

生成的html总是有用于editablegrid的<script>标签,但是浏览器并不总是加载它。js文件总是可以从javascript_include_tag生成的urls加载。

我在js加载与否中注意到的模式是,如果我单击指向页面的链接,js将不会加载,除非js已经在相同的选项卡上加载了一次。在地址栏中输入页面的url或重新搜索页面将加载js。我在Chromium上测试了这个模式。

在Chromium的元素开发工具中,只有editablegrid javascripts没有显示,所有其他的js文件似乎都被加载了。

版本:

代码语言:javascript
复制
Ruby 2.2.3p173 (2015-08-18 revision 51636)
Rails 4.2.5
Chromium 47.0.2526.106 Ubuntu 14.04 (64-bit)
Firefox 43.0.4 (Bug is there, didn't test for pattern)
EN

回答 1

Stack Overflow用户

发布于 2016-03-24 01:17:53

js应该总是放在HTML文件的末尾。由于您使用的是rails和jquery,因此您可以告诉您的js代码等待页面加载一个:

页面$(

).on(‘页面:加载’,就绪)

并将您的js代码封装在一个“就绪”函数中。

ready = -> ###将代码放在此处

抱歉,这是咖啡格式的js代码...

编辑:浏览示例时,请访问:GitHub Editablegrid page

您可以注意到,您将放置在"ready ->“中的函数将取决于您拥有的输入数据的类型。

下面是一个将可编辑网格插入HTML表的示例(这不是我的示例,而是演示中的示例):

代码语言:javascript
复制
 editableGrid = new EditableGrid("DemoGridAttach", { sortIconUp: "up.png", sortIconDown: "down.png"}); 

            // we build and load the metadata in Javascript
            editableGrid.load({ metadata: [
                { name: "name", datatype: "string", editable: true },
                { name: "firstname", datatype: "string", editable: true },
                { name: "age", datatype: "integer", editable: true },
                { name: "height", datatype: "double(m,2)", editable: true },
                { name: "country", datatype: "string", editable: true, values: 
                    { 'Europe': { "be" : "Belgium", "fr" : "France", "uk" : "Great-Britain", "nl": "Nederland"},
                      'America': { "br" : "Brazil", "ca": "Canada", "us" : "USA" },
                      'Africa': { "ng" : "Nigeria", "za": "South-Africa", "zw" : "Zimbabwe" }
                    }
                },
                { name: "email", datatype: "email", editable: true },
                { name: "freelance", datatype: "boolean", editable: true },
                { name: "lastvisit", datatype: "date", editable: true }
            ]});

            // then we attach to the HTML table and render it
            editableGrid.attachToHTMLTable('htmlgrid');
            editableGrid.renderGrid();
        } 

`这是要放在ready函数中的函数类型

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36180321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档