我正在运行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);
这不起作用。
非常欢迎建议:)
答案 0 :(得分:2)
您在主体部分末尾的脚本,每次重新加载script
时,只需将head
元素插入html的body
部分。我想知道,为什么你需要这样做呢?因为,每次点击链接时,您都会在doc的script
部分中获得重复的head
元素(感谢turbolink的魔力)。这可能是您遇到问题的原因。
如果您确实需要通过javascript执行此操作,请尝试在app / assets / javascript / application.js的末尾添加您的代码(不推荐,我知道,但只是为了测试这个想法)。 希望它有所帮助。
<强>更新强>
根据{{3}},javascript代码段应属于head
部分。要以相同的方式执行此操作,因为它们在示例中显示,您可以将脚本放在“userreport”部分内部并使用该部分内部应用程序的布局模板:
<head>
…
<%= render 'layots/userreport' %>
</head>
答案 1 :(得分:1)
不幸的是,userreport.js脚本没有启用&#34;重新加载&#34;小部件,所以这是不可能的。
我从CDN中提取代码,对其进行修改并在我的资产中使用它,以便每当我想要显示小部件时我都可以调用reset_user_report();
(请参阅此回购:https://github.com/nicolasmlv/userreport-turbolinks)
使用风险自负,因为它不再使用用户报告cdn(功能更新/错误修复)