Rails 4:如何在特定页面中添加来自其他站点的外部javascript文件
Rails 4: How to add external javascript file from other site in a specific page
我正在使用涡轮链接(rails4),以下js链接由应用程序生成.js文件在我的页面标题部分中
<script data-turbolinks-track="true" src="/assets/jquery.js?body=1"></script>
<script data-turbolinks-track="true" src="/assets/jquery_ujs.js?body=1"></script>
<script data-turbolinks-track="true" src="/assets/turbolinks.js?body=1"></script>
<script data-turbolinks-track="true" src="/assets/global.js?body=1"></script>
我的应用程序.js如下所示:
//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require_tree .
//= require bootstrap.min.js
//= require respond.min.js
我想从其他站点添加一个外部 javascript 文件,例如 http://otherdomain.com/xyz.js 在我的站点的特定页面中。假设我只想在特定的页面中添加这个外部 js 文件 http://mysite.com/profile 并且我想只在页面的标题部分添加这个 js 文件。那我该怎么做呢?请不要建议在本地保存该外部文件,因为这对我来说不是一个选择。
在布局中添加内容块:
布局.html.erb:
...
<head>
<%= yield(:header) %>
</head>
...
在一个需要 JS 文件的模板中,将其呈现到该块中:
简介.html.erb:
<% content_for(:header) do %>
<script src="http://otherdomain.com/xyz.js"></script>
<% end %>
尽管涡轮链接很酷,但我发现自己比以前更头疼。 在某些特殊情况下,我还注入特定于页面的 css 或 js,它存在于标头中。 它可能很笨拙,但我把它放在布局中,条件是使用 current_page?助手
= javascript_include_tag "whatever.com/external.js" if ( current_page?(:controller => "users" ) && current_page?(:action => "index" ) )
我目前正在考虑的解决方案是动态注入脚本:
(function(d, script) { script = d.createElement('script'); script.type = 'text/javascript'; script.async = true; script.onload = function(){ // remote script has loaded }; script.src = 'http://www.google-analytics.com/ga.js'; d.getElementsByTagName('head')[0].appendChild(script); }(document));
相关文章:
- 如何添加浮动和非浮动,其他
- 在Jquery调用之间添加其他函数
- 添加:在悬停其他elem时,将悬停状态添加到不同elem
- 如何在 Javascript 中向数组添加其他对象
- 在维护输入内容的同时添加其他字段
- 如何从帖子对象添加其他信息以在护照中注册用户
- 找到所有元素,如果没有类,则使用 jQuery 添加其他类
- 向ChartJS数据集添加其他属性
- 如果所有其他元素都填写在AngularJS中,如何动态添加新的输入元素
- 添加/到URL的末尾将用户带到随机页面,并在其他页面上剥离图像
- 添加隐藏属性以存储其他属性值
- 如何获取链接内容(innerHTML)并将其作为标题添加到其他链接
- 添加其他参数以使用fin上传器发送到服务器
- 使用appendchild或其他方法向ul添加html代码而不是纯文本
- jQuery获取其他标签's css并将其添加到其他
- 如何在使用模式框的混合Form/HEF链接中添加其他GET参数
- React Redux将项目添加到列表中会转移到其他创建的列表中
- JQuery文本编辑器-在工具栏中添加其他下拉列表
- 将类添加到其他页面上的元素中
- 使用after() jquery返回带有其他添加元素的元素