Tag: browser history

使用查询字符串重新定向后循环返回按钮

问题: 我需要从包含第二页url的查询字符串的URL开始 – http://www.firstURL.com/?http://www.secondURL.com 。 在第一个URL的目标页面上,解析查询字符串以提取第二个URL,并将浏览器重定向到第二个URL。 这是在$(document).ready上完成的,因此它是自动的。 这一切都很好,但如果用户点击第二个URL上的后退按钮,当然会陷入漏洞。 这是基本代码: $(document).ready(function() { var s = location.search; if(s != ”) { var split = s.split(‘?’); var loc = split[1].replace(‘?’, ”); location.href = ” + loc + ”; } else { //do something else on the target page.. } }); 我已经尝试创建一个条件情况,如果引用者是第二个URL(上面代码中的loc ),则重定向不执行,但似乎在重定向的情况下,后退按钮不会返回推荐人。 我必须做所有这个客户端 – 我无法访问服务器。 有没有办法防止后退按钮点击时重定向触发? 谢谢。

使用pushstate添加查询字符串

我正在做类似下面的事情 if(history.pushState) { var stateObject = { dummy: true }; var url = window.location.protocol + “//” + window.location.host + window.location.pathname + ‘?myNewUrlQuery=1’; history.pushState(stateObject, jQuery(document).find(‘title’).text(), + url); } 我的路径名正确,但查询字符串为Nan。 例如,我得到了结果 http://example.com/mypage/Nan 代替 http://example.com/page/?myNewUrlQuery=1 请告诉我是否可以使用pushstate方法在URL中添加查询字符串。 如果是,任何工作示例都将非常有用。 提前致谢。

浏览器的后退按钮显示出奇怪的行为。 History.js

我有一个标签。 在更改所选项目时,使用AJAX通过以下函数更新一些 : update_div1, update_div2, update_div3 。 管理此操作的代码如下并且运行良好: $(‘select.select-x’).change(function(e) { e.preventDefault(); var value = $(‘select.select-x option:selected’).val(); var text = $(‘option:selected’).text(); update_div1(value); update_div2(value); update_div3(value); manage_history(value,text); return false; }); 问题出在最后一个函数manage_history ,它负责管理浏览器历史记录。 在这个函数中,我使用history.js来推送历史堆栈中的浏览器状态。 据我所知,在阅读了很多有关history.js的文章之后,应该在History.Adapter.bind()包含后退和前进按钮的操作。 问题是浏览器的后退按钮具有奇怪的行为:它们多次执行History.Adapter.bind()内部的函数,这是我已经通过触发onChange事件的次数的exaclty。 manage_history的代码是: function manage_history(str,str2) { var History = window.History; if ( !History.enabled ) { return false; } var path = ‘http://localhost/enc/?p=’+str; History.pushState({myid:str},str2,path); History.Adapter.bind(window,’statechange’,function() { […]

如何修改Facebook的照片查看器的历史记录?

我的网站上有一个类似于facebook的照片查看器的弹出模式。 当模态打开时,它显示来自另一个页面的内容,我想更改地址栏值和历史记录以显示此内容。 模态中有一个下拉列表,它将模态中的内容更改为其他页面的内容。 发生这种情况时,我再次想要更改地址栏值和历史记录以显示页面已更改。 基本上,我想要完全复制facebook的照片查看器的行为 ,您可以通过以下方式尝试: 点击此链接 点击Photos 点击页面上的照片 单击向右或向左箭头(或使用键盘箭头键)更改iamges a)单击浏览器中的后退和前进历史记录按钮 b)单击照片查看器 我试图创建一个JSFiddle来显示我在这里的位置,但JSFiddle显然不允许操纵历史记录。 因此,我已将我的代码放在这里 , 您可以从这里下载 。 几个关键点: 首先查看索引页面,然后使用该链接转到测试页面 当模态关闭时,按后退按钮不应重新打开模态,而是应该返回索引页面。 关闭模式后,按下前进按钮应该重新打开模式,因为Facebook的照片查看器确实处于原始状态 在我的生产代码中,将更改完整的URL,而不是在URL中添加/更改变量,如演示代码中所示

Javascript / jQuery仅在浏览器后退/前进按钮单击时检测哈希更改

是否可以仅在浏览器历史记录更改(即后退或前进按钮)上检测哈希更改? 我已经看到了onBeforeUnload事件,但是这个事件不会触发哈希更改,因为窗口没有卸载。 散列事件显然会随着哈希更改而触发。 任何修复? 优选地,没有插件。 我见过jQuery历史插件,但我正在寻找最简单的解决方案。 谢谢您的帮助。

历史API html5,如何知道用户点击下一个/后一个浏览器按钮的时间?

我熟悉html5 History API,但我使用history.js来扩展兼容性, 我有一个问题就是这样,我怎么知道: History.Adapter.bind(window,’statechange’,function(){ // Note: We are using statechange instead of popstate var State = History.getState(); // Note: We are using History.getState() instead of event.state /* Condition here to know if this change is a back or next button, and wich one?? */ }); 这是我的“整体”代码…… var the = this; var History = window.History; […]

使用ajax支持浏览器后退按钮而不依赖于散列更改?

我目前正在使用jQuery BBQ插件来启用bowser导航按钮,但我有一个问题,如果用户为其中一个页面保存了书签,请说… www.mysite.com/#page1 当用户通过书签返回时,整页必须首先加载… www.mysite.com/ 在url的哈希部分之前可以用于ajax回调来完成页面。 为了解决这个问题,我尝试在主页面的所有url调用上只创建一个“骨架”页面,以便通过ajax获取所有“内部”内容,但这似乎不是一个很好的解决方案。 有没有人知道任何不使用’hash’方法来支持’后退按钮历史记录等的方法/插件?

带有history.pushState和popstate的Ajax – 当popstate state属性为null时,我该怎么办?

我正在尝试使用ajax加载内容的HTML5历史API。 我有一堆通过相关链接连接的测试页面。 我有这个JS,它处理这些链接的点击。 单击链接时,处理程序会获取其href属性并将其传递给ajaxLoadPage(),该页面将所请求页面中的内容加载到当前页面的内容区域中。 (我的PHP页面设置为在正常请求时返回完整的HTML页面,但只有一小部分内容,如果?fragment = true附加到请求的URL。) 然后我的click处理程序调用history.pushState()以在地址栏中显示URL并将其添加到浏览器历史记录中。 $(document).ready(function(){ var content = $(‘#content’); var ajaxLoadPage = function (url) { console.log(‘Loading ‘ + url + ‘ fragment’); content.load(url + ‘?fragment=true’); } // Handle click event of all links with href not starting with http, https or # $(‘a’).not(‘[href^=http], [href^=https], [href^=#]’).on(‘click’, function(e){ e.preventDefault(); var href = $(this).attr(‘href’); […]

使用AJAX / jQuery加载页面和history.pushState()方法保留浏览器“后退”按钮function

我想通过AJAX(jQuery load方法)加载页面并通过history.pushState方法将URL推送到浏览器栏时保留后退按钮function。 单击浏览器后退按钮时出现问题,第一次单击仅恢复以前的URL但不加载上一页。 到目前为止,这是我的代码: $(function(){ var profile_url= “/profile”; $(‘#click_button’).click(function(){ $(‘#main_content’).load(profile_url); history.pushState({profile:profile_info}, “profile”, profile_url); }); }); 我的问题是,有没有办法在第一次单击后退按钮时将上一页的AJAX加载到#main_content div中? 任何帮助/建议将不胜感激。

在浏览器中返回/转发是否会更改javascript变量?

var x = 0; //this occurs in the beginning of the page. $(“#button”).onclick{ x = 1; } 假设变量“x”变为1.然后用户单击链接。 当用户点击“返回”时,x是0还是1?