Rails 4 turbolinks导致html画布在ipad上消失

时间:2013-10-19 18:05:35

标签: javascript ruby-on-rails ipad canvas turbolinks

我正在使用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

2 个答案:

答案 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文档中引用它,特别是因为它有一个宝石。