见http://balupton.github.io/jquery-history/demo/
我被jquery.history.js吸引了。
当我发现
http://benalman.com/code/projects/jquery-hashchange/examples/document_domain/
我想第二个只是基于jquery。我的意思是,除了jquery,它不需要任何额外的插件。
jquery.history.js中有什么特别之处?比哈希变化?.
我应该使用哪个来覆盖浏览器的后退和前进按钮?
最佳答案
编辑-2013年末
另一个名为“sammy.js”的哈希库也很流行。它有一个很好的客户端路由图。客户端路由结构用于处理hashchange事件,以便您可以使用它为某些页面提供类似应用程序的功能。有关详细信息,请参见https://github.com/quirkey/sammy/wiki/Presentations。
此外,在下面的示例中,几乎不需要使用普通链接。你可以使用按钮,li,任何你想要的Ajax响应链接,只要你能绑定到他们的点击事件。您使用的路由参数可以存储在被单击元素的数据属性中,或者其他可以通过被单击元素识别的地方,例如在javascript字典对象中。点击事件触发后,您可以检索必要的路由值,并使用html5 push状态、jquery bbq push状态、hashbang等。
概述
history.js和jquery bbq库用于在启动Ajax或页面事件时维护状态。您可以使用这些库来存储有关浏览器历史记录的信息&/或者您对URL进行修改,这样您就可以使用页面上的前进和后退按钮进行Ajax调用、选项卡更改、图像浏览,以及任何您想要绑定历史记录日志的内容。两个库的基本用法都有一些相似的API。
历史.js
新的history.js库对pushstate和popstate使用HTML5浏览器标准,如果浏览器不支持HTML5 pushstate,则返回hashchange方法。pushstate允许您将URL推送到浏览器栏=更改URL而不重新加载页面!主存储库https://github.com/browserstate/history.js
使用它,你
(a)包括脚本文件,(b)绑定到“statechange”事件,(c)处理statechange事件,(d)在wnat时触发statechange事件-当用户单击等。
笔记:
每当用户按下向前或向后按钮时,将触发状态更改事件。在bind方法/处理程序中,您将调用一个获取相应状态的方法。(1)
方法/函数history.getstate()可用于根据所推入的页面历史记录从服务器获取数据。您可以在状态对象中存储任何变量。通常您希望存储一个URL。(0)每次有人单击要跟踪其历史记录的(非页面刷新)链接时,都需要填充历史记录状态。
(0)
$("#navbar").on("click","li[data-ajax-link='true']", function(e) {
var url = $(this).data('uri');
var target = $(this).data('target');
var title = $(this).data('text');
History.pushState({ url: url, target: target }, title, url);
});
History.Adapter.bind(window, 'statechange', function() {
updateContent(History.getState());
});
var updateContent = function(State) {
var url = State.data.url;
var $target = $(State.data.target);
ajaxPost(url, $target);
};
$("a[data-custom-ajax-link='true']").click(function (e) {
var target = $(this).data('target');
var url = $(this).attr('href');
$.bbq.pushState({ url: url, target: target });
e.preventDefault();
});
$(window).bind("hashchange", function(e) {
var url = $.bbq.getState("url");
var $target = $($.bbq.getState("target"));
var frame = $.bbq.getState("target");
$.ajax({
url: url,
data : null,
type: "POST",
beforeSend: function (xhr) { xhr.setRequestHeader('X-Target', frame); },
success: function (data) {
$target.html(data);
}
});
});
关于jquery - jquery.history.js VS jquery-hashchange,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16980735/
rails中是否有任何规定允许站点的所有AJAXPOST请求在没有authenticity_token的情况下通过?我有一个调用Controller方法的JqueryPOSTajax调用,但我没有在其中放置任何真实性代码,但调用成功。我的ApplicationController确实有'request_forgery_protection'并且我已经改变了config.action_controller.consider_all_requests_local在我的environments/development.rb中为false我还搜索了我的代码以确保我没有重载ajaxSend来发送
我有一个电子邮件表格。但是我正在制作一个测试电子邮件表单,用户可以在其中添加一个唯一的电子邮件,并让电子邮件测试将其发送到该特定电子邮件。为了简单起见,我决定让测试电子邮件通过ajax执行,并将整个内容粘贴到另一个电子邮件表单中。我不知道如何将变量从我的HAML发送到我的Controllernew.html.haml-form_tagadmin_email_blast_pathdoSubject%br=text_field_tag'subject',:class=>"mass_email_subject"%brBody%br=text_area_tag'message','',:nam
我以为它已经安装了,但在我的gemfile中有gem"jquery-rails"但是在我的asset/javascripts文件夹中accounts.js.coffeeapplication.js都被注释掉了这是我的虚拟railsapplication但是在源代码中没有jQuery并且删除链接不起作用......任何想法都丢失了 最佳答案 看看thisRailscast.您可能需要检查application.js文件并确保它包含以下语句。//=requirejquery//=requirejquery_ujs
我想在页面顶部创建自定义Jquery消息而不是标准RailsFlash消息。我想在我的投票底部附近创建一条即时消息。我的Controller:defvote_up@post=Post.find(params[:id])current_user.up_vote(@post)flash[:message]='Thanksforvoting!'redirect_to(root_path,:notice=>'Takforditindlæg,deternuonline!')rescueMakeVoteable::Exceptions::AlreadyVotedErrorflash[:error]
我看到有关未找到文件min.map的错误消息:GETjQuery'sjquery-1.10.2.min.mapistriggeringa404(NotFound)截图这是从哪里来的? 最佳答案 如果ChromeDevTools报告.map文件的404(可能是jquery-1.10.2.min.map、jquery.min.map或jquery-2.0.3.min.map,但任何事情都可能发生)首先要知道的是,这仅在使用DevTools时才会请求。您的用户不会遇到此404。现在您可以修复此问题或禁用sourcemap功能。修复:获取文
我目前从prototype切换到jquery主要是为了支持简单的ajax文件上传。我使用:https://github.com/indirect/jquery-rails95%的javascript代码是由railshelper编写的,例如:-remote_function-render:updatedo|page|-page.replace_html'id',:partial=>'content'-page['form']['name']=something-page.visual_effect:highlight,'head_success'...我知道我必须为Jquery重写5%
我最近开始了一个项目,团队决定我们希望使用jQuery而不是Prototype/Scriptaculous来满足我们的javascript需求。我们设置了我们的项目,并开始切换。插件已安装viatheseinstructions,一切都按计划进行。不久之后,当尝试运行“./script/server”时,我们收到以下错误:=>Rails2.3.2applicationstartingonhttp://0.0.0.0:3000/usr/local/lib/ruby/gems/1.9.1/gems/activesupport-2.3.2/lib/active_support/depende
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。有没有学习Ajax(jQuery)和Rails3的好资源?
这个问题已经被问过几次了,但我尝试了提供的解决方案,但仍然没有帮助,所以我提出了一个新问题。gem文件gem'jquery-ui-rails'按照建议,我将gem放在:assets组之外Application.css~*=require_self*=requirejquery.ui*=requirebootstrap-datepicker*=requirejquery.timepicker*=require_tree.*/RailsAssetPipeline根据列出的顺序加载Assets。在这里,我把它排在列表的第2位。Application.css.scss*=require_sel
我有一个Rails应用,使用Rails5.1.6和ruby2.3.5p376我的Gemfile中有这两个gemgem'jquery-rails','~>4.3.3'gem'jquery-ui-rails','~>6.0.1'在show.html.erb中我有以下内容:$(function(){$("#datepicker").datepicker();});Date:在application.js中//=requirejquery-ui//=requirejquery//=requirerails-ujs//=requireturbolinks//=require_tree.在appl