我很兴奋关于turbolinks3(它允许你仅渲染部分内容而不重新加载整个页面)。你可以在这里阅读更多相关信息:https://github.com/rails/turbolinks/blob/master/CHANGELOG.md。虽然这很棒,但我有一个问题:在不支持pushState的浏览器(例如ie8/9)中,我不知道如何管理其行为。在IE8上它给我这个错误:
一个“解决方案”可能是我这样做:
但问题在于它会回复我很多不需要的数据!(响应时间也更长)。所以我真的想找到另一种解决方案。
如何解决这个问题?我考虑了两种解决方案:
1)使用history.js / modernizr在旧浏览器上填充pushState 但我试过了,总是得到相同的错误(就像没有modernizr一样)
网页错误详细信息 用户代理:Mozilla/4.0(兼容;MSIE 8.0;Windows NT 6.1;WOW64;Trident/4.0;SLCC2;.NET CLR 2.0.50727;.NET CLR 3.5.30729;.NET CLR 3.0.30729;Media Center PC 6.0) 时间戳:Sat, 25 Apr 2015 17:28:52 UTC 消息:无法设置innerHTML属性。对于此操作而言,目标元素无效。 行:26 字符:30464 代码:0 URI:https://stark-forest-5974.herokuapp.com/assets/application-83a3aa4fd4a1ee124da87760bfdca86febd4fc1cb8a13167c892a15ce3caa53d.js 2) 找到一种方法来检查请求是由turbolinks / pjax完成的还是不完整的...并使用有条件的渲染或redirect_to
但我不知道如何做到这一点,因为turbolinks不像jquery-pjax那样发送特定的标头。
有什么建议吗?非常感谢!
PS:请不要向我推荐backbone / angular / ember / react,我已经了解了它们(backbone),但我想尝试turbolinks。
Could not set the innerHTML property. Invalid target element for this operation.
我的控制器代码如下:
def create
@post = Post.find(params[:post_id])
if @post.comments.create(comment_params)
render '_comment', change: [:comments, :super_test], layout: false, :locals => { comment: @post.comments.last }
else
render json:'error'
end
end
一个“解决方案”可能是我这样做:
redirect_to @post, change: [:comments, :super_test]
但问题在于它会回复我很多不需要的数据!(响应时间也更长)。所以我真的想找到另一种解决方案。
如何解决这个问题?我考虑了两种解决方案:
1)使用history.js / modernizr在旧浏览器上填充pushState 但我试过了,总是得到相同的错误(就像没有modernizr一样)
网页错误详细信息 用户代理:Mozilla/4.0(兼容;MSIE 8.0;Windows NT 6.1;WOW64;Trident/4.0;SLCC2;.NET CLR 2.0.50727;.NET CLR 3.5.30729;.NET CLR 3.0.30729;Media Center PC 6.0) 时间戳:Sat, 25 Apr 2015 17:28:52 UTC 消息:无法设置innerHTML属性。对于此操作而言,目标元素无效。 行:26 字符:30464 代码:0 URI:https://stark-forest-5974.herokuapp.com/assets/application-83a3aa4fd4a1ee124da87760bfdca86febd4fc1cb8a13167c892a15ce3caa53d.js 2) 找到一种方法来检查请求是由turbolinks / pjax完成的还是不完整的...并使用有条件的渲染或redirect_to
但我不知道如何做到这一点,因为turbolinks不像jquery-pjax那样发送特定的标头。
有什么建议吗?非常感谢!
PS:请不要向我推荐backbone / angular / ember / react,我已经了解了它们(backbone),但我想尝试turbolinks。