我正在运行rails,并且在我的body标记的末尾有以下代码。
: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);这不起作用。
非常欢迎您的建议:)
发布于 2015-04-03 21:15:25
您的脚本在正文部分的末尾,只是在每次重新加载body时将script元素插入到html的head部分。我想知道,为什么你需要这样做呢?因为,每次单击链接时,您都会在文档的head部分获得一个重复的script元素(多亏了turbolink的魔力)。这可能是您的问题的原因。
如果你真的需要用javascript来做这件事,试着在app/assets/javascript/application.js的末尾添加你的代码(我知道不推荐这样做,只是为了测试一下这个想法)。希望能有所帮助。
根据UserReport's docs更新 javascript代码片段应该属于head部分。同样的方法,如他们的例子所示,你可以将脚本放在一个‘userreport’片段中,并使用该片段在应用的布局模板中:
<head>
…
<%= render 'layots/userreport' %>
</head>发布于 2015-07-28 03:49:57
不幸的是,userreport.js脚本不支持小部件的“重新加载”,因此这是不可能的。
我从CDN中提取了代码,对其进行了修改并在我的资源中使用了它,这样我就可以在想要显示小部件的时候调用reset_user_report(); (请参阅这个代码库:https://github.com/nicolasmlv/userreport-turbolinks)。
使用风险自负,因为它将不再使用userreport cdn (功能更新/错误修复)
https://stackoverflow.com/questions/27973980
复制相似问题