我正在运行rails,并且在代码标签的末尾有此代码。
:javascript
var _urq = _urq || [];
_urq.push(['initSite', 'mySiteId']);
(function() {
var ur = document.createElement('script'); ur.type = 'text/javascript'; ur.async = true;
ur.src = ('https:' == document.location.protocol ? 'https://cdn.userreport.com/userreport.js' : 'http://cdn.userreport.com/userreport.js');
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ur, s);
})();
无论我做什么,单击任何和所有启用了Turbolink的链接都会破坏此代码。该按钮消失。
我尝试将代码封装在名为userReport的函数中,然后执行以下操作:
$(document).ready(userReport);
$(document).on('page:load', userReport);
这是行不通的。
建议非常欢迎:)
最佳答案
您在主体部分末尾的脚本仅在每次重新加载script
时将head
元素插入到html的body
部分中。我想知道,为什么您需要这样做?因为,每次单击链接时,您都会在doc的script
部分获得一个重复的head
元素(这要感谢Turbolink的魔力)。这可能是您遇到问题的原因。
如果您确实需要使用javascript来执行此操作,请尝试将代码添加到app / assets / javascript / application.js的末尾(我不建议这样做,只是为了验证这一点)。
希望能帮助到你。
更新
根据UserReport's docs,JavaScript代码段应属于head
部分。要以相同的方式进行操作(如示例所示),您可以将脚本放置在“userreport”部分中,并在应用的布局模板中使用该部分:
<head>
…
<%= render 'layots/userreport' %>
</head>
关于javascript - UserReport和Turbolinks-如何使JS Turbolink兼容?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27973980/