我正在使用Ruby on Rails 4. - app / views / layouts / application.html.erb包含:
<!DOCTYPE html>
<html>
<head>
<%= javascript_include_tag "application" %>
</head>
<body>
<canvas id="can"></canvas>
<%= link_to "link to here", "#" %>
<button onclick="task()" >make square</button>
</body>
<script>
function task(){
var c = document.getElementById("can");
var ctx = c.getContext("2d");
ctx.fillStyle="#FF0000";
ctx.fillRect(0,0,c.width,c.height);
}
</script>
</html>
- app / assets / javascripts / application.js包含:
//= require turbolinks
此程序可在我的Chrome和Firefox工作站上正常运行。然而,在我在Safari中的ipad上,当我点击链接时,我再也无法通过单击按钮重新显示画布。我重新加载页面时按钮工作。如果我删除了application.html.erb的第4行,那么Safari就像Chrome一样,并且该按钮始终有效。但是,如果没有第4行,该链接将不再导致该框消失。
这是我的第一个rails项目。我在这里完全失去了任何帮助,见解,线索或建议将不胜感激。先感谢您。 --laertiades
答案 0 :(得分:1)
我认为turbolinks有一些错误。
我试图在我的网站上实现skrollr,
和turbolinks造成某种阻止skrollr
的错误在重新加载/返回命令时正常工作。
你可能遇到了同样的问题。
放入一些console.log语句,看看你的页面是否被立即加载两次。
第二次加载时,会显示日志,但不会显示行号。
我还没有想到这一点,所以我刚从我的应用程序中删除了turbolink。
Turbolinks“可以更快地在您的应用程序中建立以下链接”,
因此,您必须保留在申请表中,这不是必要的功能。
您只需删除
行即可//=require turbolinks
答案 1 :(得分:0)
我终于找到了如何让skrollr在使用数小时后使用turbolinks或任何其他pushstate方法。
正常嵌入并调用skrollr函数:
$(window).ready(function() {
var s = skrollr.init();
});
然后在新页面上使用skrollr.init().refresh();
或为您的pushstate插件加载页面功能。因此,使用turbolinks可以使用:
$(document).on('page:load', function () {
skrollr.init().refresh();
});
希望这会节省很多时间,应该在skrollr文档中引用它,特别是因为它有一个宝石。