我得到了一个 javascript 行,它调用一个 javascript 文件,该文件是由一家名为 walkme 的公司制作的。
我有一个 app/assets/javascript/application.js 文件,它调用我用于该网站的所有 jquery。例如它包含:
require feed
当有人在 feed 页面上时,它会调用 feed.js。我希望在调用此代码的同时也调用 walkme.js
我正在寻找一种方法来添加此<script ...
编写使用 slim 和 jquery 的 ruby 站点的代码。
<script type="text/javascript">(function() {var walkme = document.createElement('script'); walkme.type = 'text/javascript'; walkme.async = true; walkme.src = 'https://cdn.walkme.com/thewalkme.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(walkme, s); window._walkmeConfig = {smartLoad:true}; })();</script>
我尝试过一种直率的方式,即在与 feed.js 相同的位置制作 walkme.js 并将其放在 <script ...
中。该文件中的代码,同时添加必要的 require walkme
代码,但这似乎没有任何作用。
一些信息:
- Ruby on Rails
- ruby 2.1.7p400
- ubuntu 14.04 LTS 服务器
- 某些文件名为 *.html.slim
正如您可能知道的那样,我并没有编写所有 ruby 代码,也不是 ruby、javascript 或 jquery 方面的专家。
如果这只是一个 html 网站,我认为只需将代码行添加到 header 即可。
最佳答案
大多数情况下,Javascript 是在页面加载完成后调用的,因为您很可能想要操作 DOM。
因此,您要么不想在文档头部调用脚本,除非脚本中有 document.ready
。
回答你的问题,如果你想要以下脚本:
function(){
var walkme = document.createElement('script');
walkme.type = 'text/javascript';
walkme.async = true;
walkme.src = 'https://cdn.walkme.com/thewalkme.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(walkme, s);
window._walkmeConfig = {smartLoad:true};
};
仅在您应用程序的 feed
页面上可用,
您可以将此函数作为一个命名函数,放在单独的文件中(例如 feed.js.coffee
),并在您的 slim View 页面中调用该函数,如下所示:
//feed.js.coffee:
@feed = ->
walkme = document.createElement('script')
walkme.type = 'text/javascript'
walkme.async = true
walkme.src = 'https://cdn.walkme.com/thewalkme.js'
s = document.getElementsByTagName('script')[0]
s.parentNode.insertBefore walkme, s
window._walkmeConfig = smartLoad: true
return
在您看来:
/feed.html.slim:
...
your codes...
...
coffeeview:
feed
关于javascript - 将 javascript 行添加到以 slim 编写的 ruby 站点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34114825/