我正在使用这个 jQuery 插件
http://www.asual.com/jquery/address/
因为我有一个完整的 ajax 站点被黑,Rails 3.1.0
但我的操作/方法也响应 html 请求。
所以如果我有链接
<%=link_to "my link",{:controller=>"my_controller",:action=>"my_action"},:remote=>true%>
它会进行调用,但 URL 将保持不变,如果我共享 URL,您将始终查看根页面/
页面,但是使用此插件,我可以调用远程方法my_controller
并更改显示 url
var elemetns = $("a.addressPlugin");
$.address.crawlable(1).state('/').init(function(){
elemetns.address();
});
我的新链接
<%=link_to "my link",{:controller=>"my_controller",:action=>"my_action"},:class=>"addressPlugin",:remote=>true%>
现在我的网址看起来像
http://localhost:3000/my_controller/my_action
但是当我回击浏览器时,页面保持不变
然后我想这样做
var elemetns = $("a.addressPlugin");
$.address.crawlable(1).state('/').init(function(){
elemetns.address();
}).change(function(e){
$.ajax({type:'GET',url:e.path,dataType:'script',cache:true});
});
所以现在它可以前后移动,但是....
当我单击链接时,它会进行两次远程调用....一次用于链接本身,一次用于.change(...
方法....但是当我向后退时它可以完美运行,它只在.change(...
方法上调用一次....所以
如何防止$.ajax
仅在浏览器上向后和向前而不是在单击链接时进行调用,因为他们已经自己进行了调用?
<< -- 更新 -- >>
在 Safari 和 Chrome 浏览器中,当我从主页退一步进入历史记录,然后使用浏览器的按钮向前导航时,我得到一个完整的白屏,仅显示加载我的main/index
视图的 javascript 函数通过ajax,但只有在浏览器中
<< -- 更新 -->
基本上这就是我想要复制的,但是在 Rails 上使用 ruby 和他们的remote links