9

私はターボリンク (rails4) を使用しており、次の js リンクは、ページのヘッダー セクションの application.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>

私のapplication.jsは次のようになります。

//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require_tree .
//= require bootstrap.min.js
//= require respond.min.js

自分のサイトの特定のページにhttp://otherdomain.com/xyz.jsなどのOTHER サイトから外部 JavaScript ファイルを追加したいと考えています。この外部 js ファイルを特定のページhttp://mysite.com/profileにのみ追加し、この js ファイルをページのヘッダー部分にのみ追加するとします。では、どうすればそれを行うことができますか?その外部ファイルをローカルに保存することは私にとって選択肢ではないため、提案しないでください。

4

3 に答える 3

12

レイアウトにコンテンツ ブロックを追加します。

レイアウト.html.erb :

...
<head>
  <%= yield(:header) %>
</head>
...

JS ファイルを必要とする 1 つのテンプレートで、そのブロックにレンダリングします。

profile.html.erb :

<% content_for(:header) do %>
  <script src="http://otherdomain.com/xyz.js"></script>
<% end %>
于 2013-09-20T17:38:12.237 に答える
3

私が現在検討している解決策は、スクリプトを動的に挿入することです。

(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));
于 2013-11-04T19:24:43.727 に答える