我有一个基于jQuery的ajax应用程序.我使用jQuery历史插件启用了浏览器历史记录.但我们发现该应用程序产生了太多的历史.
特别是,我们提供了一个页内"ajax-back"按钮,使页面能够返回到先前的ajax状态.当按下页面内的"ajax-back"按钮时,我们希望它像broswer后退按钮一样,通过移动历史记录的当前索引,或删除最新的历史记录,插入新的历史记录的instand.
所以,我想问一下,是否可以从javascript中删除最新的浏览器记录?或者是否可以修改浏览器历史列表的当前索引?
将非常感谢基于jQuery历史插件的示例.
我目前正在为女性避难所开发一个网站.由于这是使用该网站的人非常敏感的信息,我想阻止浏览器存储他们访问的任何历史记录.是否可以使用HTML5 History API之类的东西?理想情况下它也适用于IE6 +,因为有很多人使用旧版本的IE.
我知道浏览器有私人浏览模式,但大多数人不了解它们,所以一些自动方式最好.
一个潜在的(虽然不太优选)解决方案是提示人们使用私人浏览模式,如果他们当前没有这样做.是否可以通过JavaScript检测到这一点?
编辑:我已经接受了Virgil的答案,因为他们可能需要将他们学到的东西应用到其他网站,因此他们可能需要将其学习.我也在隐藏我的访问按钮location.replace上使用了Joseph's ,因此它禁用了后退按钮.
需要注意的一件有趣的事情是,我尝试history.replace在网站上的所有链接上使用,认为这将取代所有浏览器历史记录,这意味着只记住查看过的最后一页.然而,在Firefox中打开历史记录面板 - 未在其他浏览器中测试 - 仍然显示每个页面的日志,它们只是通过后退按钮无法访问.
因此,对于任何有类似查询的人,我想重申,教育用户是保护用户的第一步.谢谢大家的建议.
问候
里克
我的网站问题是Chrome.
大多数网站使用ajax/xmlhttprequest进行页面加载,使用历史API来启用后退按钮.只有页面内容随请求而变化,菜单等永远不会重新加载.这只是重新重新启动上一页的ajax请求.这一切都正常,直到有人在查看博客后单击后退按钮.博客没有加载ajax,它只是一个标准链接.
在Firefox中,如果我访问博客,请按回网站正确加载.加载导航的主页面是要在其中查看的页面.
在Chrome中,如果我按下博客中的后退按钮,则不会加载"外部"页面,只会显示ajax请求的内容.您可能需要查看它才能完全理解.
这是Chrome或我工作中的错误吗?似乎我无法返回到使用xmlhttprequest部分加载的页面,因为只加载了请求的项目.
该网站在这里:http://www.basmooarc.com
谢谢
里克
我想我缺少一些关于Backbone路由功能的基础知识.
我正在构建一个应用程序,它看起来像这样:
file: app.js
App = {}
App.nav = new Backbone.Router;
require('app/controller');
Run Code Online (Sandbox Code Playgroud)
file: controller.js
App.nav.route('home', 'home', function () {
console.log("Home Activated");
});
App.navigate('home');
Run Code Online (Sandbox Code Playgroud)
此时浏览器将地址栏中的URL更改为/home但没有任何反应,我没有收到Home Activated控制台消息.
我已经尝试使用自己的路由类(即Backbone.Router.extend({})),但我真的没有看到它的一点,因为我仍然需要初始化它,我想在我的应用程序中使用所有模块/控制器添加的中央历史/导航路由到它而不是为每个控制器创建一个路由器.
我究竟做错了什么?
当我使用JSConsole并输入window.history时,它不包含任何pushState方法.那发生了什么?它是在Android 4.0中在默认浏览器中删除的,还是我如何使用它?
是否有任何设施可以帮助处理Dart标准库中的状态和后退按钮?或者我是否需要模拟Javascript解决方案来实现Web应用程序状态的导航?
我打算将其应用于个人项目,因此浏览器兼容性不是问题(即仅HTML5解决方案就可以了).
非常感谢.
编辑3:这个jsFiddle适用于插件,我几乎拥有它.
编辑2:我做了一个小提琴.我无法让插件在那里工作,但也许它更容易分析.
在我正在构建的网页中,通过Ajax加载文章(帖子)和新页面.在加载新的Ajax内容的同时,地址栏会发生变化(使用jQuery Address插件).
所以正常的导航会像这样:
//page2/page3/article7/page3/page4
请注意,在此导航中,没有按下任何浏览器按钮,退出文章7时,网站返回到其先前的URL,在这种情况下是page3.
当用户按下后退或前进按钮时,插件不会检测到.我设法找出了一种方法来了解用户何时按下后退或前进按钮:
每次添加新内容并更改地址时,我都会将新地址存储在一个数组中.如果用户按下后退或前进按钮,我会这样分析:
if(new_url == penultimate_value_in_array)=>按下后退按钮(从数组中删除最后一个值)
else =>按下前进按钮(向数组添加新值)
这适用于这种导航:
//page2/page3/page4
在我的情况下,它适用于后退按钮.但是,如果用户从/ article7按下Forward到/ page3,该函数会将其读作Back.这是一个了解我的意思的例子:
用户在/ page4并按Back - > new_page =/page3等于penultimate_page_in_array(/ page3)=> BACK
//page2/page3/article7/page3/page4
用户在/ page3并按Back - > new_page =/article7等于penultimate_page_in_array(/ article7)=> BACK
//page2/page3/article7/page3
user在/ article7中并按Back - > new_page =/page3等于penultimate_page_in_array(/ page3)=> BACK
//page2/page3/article7
用户在/ page3中按Back - > new_page =/page2等于penultimate_page_in_array(/ page2)=>返回
//page2/page3
user在/ page2中并按下Forward - > new_page =/page3,它不等于penultimate_page_in_array(/)=> FORWARD
/ /第2页
user在/ page3中并按下Forward - > new_page …
如何使用chrome.history API获取最近访问过的标签的网址,特别是访问过的最后10个网址?
javascript google-chrome browser-history google-chrome-extension
我想在过去的几(5或10)分钟内捕获Android手机中所有浏览器的浏览历史记录.我正在使用的代码是
Calendar ci = Calendar.getInstance();
String enddate = "" + ci.get(Calendar.YEAR) + "-"
+ (ci.get(Calendar.MONTH) + 1) + "-"
+ ci.get(Calendar.DAY_OF_MONTH) + " " + ci.get(Calendar.HOUR)
+ ":" + ci.get(Calendar.MINUTE) + ":" + ci.get(Calendar.SECOND);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
ci = Calendar.getInstance();
ci.add(Calendar.MINUTE, -5);
String startdate = "" + ci.get(Calendar.YEAR) + "-"
+ (ci.get(Calendar.MONTH) + 1) + "-"
+ ci.get(Calendar.DAY_OF_MONTH) + " " + ci.get(Calendar.HOUR)
+ ":" + ci.get(Calendar.MINUTE) + ":" + ci.get(Calendar.SECOND);
long startdates = 0;
long enddates …Run Code Online (Sandbox Code Playgroud) 我说我有一个像这样的页面的部分(粗略的HTML给出一个想法):
www.mydomain.com/contact-us
<div class="regional-offices">
<div class="south-west">
<a href="#south-west">South West</a>
<div class="south-west-content">South west office address</div>
</div>
<div class="north-east">
<a href="#north-east">North East</a>
<div class="north-east-content">North east office address</div>
</div>
...
...
Run Code Online (Sandbox Code Playgroud)
目前,这些是一组手风琴,展开以显示链接点击时的内容.我想要做的是将它们视为单独的URL,以便它们可以被Google单独编入索引,当然它们只是一个页面的一部分.
我一直在研究历史API,并且可以看到我如何为每个部分创建唯一的URL这样做,但我的理解落在了谷歌或其他搜索引擎将如何处理这些链接,如果所需的信息已经是页面,而不是存储在自己的单独URL.
例如,第一步是将<a>标记更改为:
<a href="/contact-us/north-east">North East</a>
Run Code Online (Sandbox Code Playgroud)
然后我们可以使用JS preventDefault()直接转到URL,而是为用户提供扩展的手风琴,使用History API将页面向下滚动到手风琴和唯一的URL.如果我们直接访问URL或点击任何链接,这一切都很好.
但问题是,据我所知,Google抓取工具会尝试关注该链接并面对404,因为没有Javascript阻止访问URL中的资源.而且我也不希望有.
或者我需要一个独特的位置来保存手风琴的内容,这是可转位的,并且当折叠的手风琴与之交互时也会用AJAX拉入?
如果我没有说清楚,请道歉.
browser-history ×10
javascript ×6
android ×2
browser ×2
jquery ×2
ajax ×1
backbone.js ×1
dart ×1
history.js ×1
html ×1
html5 ×1
seo ×1