首先,我知道有提供polyfills图书馆location.pushState/ popState(History.js,Hash.js,jQuery的hashchange),所以请不要只是链接到这些.
我需要一个更强大的库来实现RIA中的以下功能:
<a>利用点击处理程序利用所有元素
preventDefault)和中的页面重新加载location.pushState/设置location.hash此外,应在用户导航回来时恢复以前加载的内容.
例如,在Internet Explorer <10和任何其他浏览器中点击Google+.
有什么东西可以接近吗?我需要支持IE8,FF10,Safari 5和Chrome 18.此外,它应该拥有像MIT或Apache这样的许可许可.
到现在为止,我只知道如果我想在不重新加载整个页面的情况下更改URL,我必须使用HTML浏览器历史记录 API.
我在我的网站上使用这个概念.我们举个例子吧.假设用户在此页面上
https://www.example.com/aboutus
Run Code Online (Sandbox Code Playgroud)
然后他进入我们有过滤器的产品列表.点击任何过滤器系统会生成类似这样的新网址
https://www.example.com/products?brands[]=song&brands[]=samsung&condition[]=new
Run Code Online (Sandbox Code Playgroud)
在内部,它只是在呼唤
history.pushState({}, 'Title', link.href);
Run Code Online (Sandbox Code Playgroud)
但是,它有一个问题.单击back按钮将转到上一个过滤器.我不想要这个功能.我想,点击浏览器后退按钮,它应该到页面之前的current页面.在我们的例子中,它应该采取
https://www.example.com/aboutus
Run Code Online (Sandbox Code Playgroud)
谢谢.
在history.pushStateiOS上调用Safari 后,当使用浏览器后退按钮进行更改时,不再可以使用alert(),confirm()或prompt().
这是iOS错误吗?有没有已知的解决方法?
重现此行为的简单示例:
<html>
<body>
<ul>
<li>Step 1: <button onclick="alert(Math.random())">Confirm Alert is working</button></li>
<li>Step 2: <button onclick="history.pushState(null, null, '/debug/'+Math.random());">Change History</button></li>
<li>Step 3: use your browser back button, to go back</li>
<li>Step 4: <button onclick="alert(Math.random())">Alert is not working anymore</button></li>
</ul>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
你可以在这里尝试一下:goo.gl/faFW6o.
在修改历史状态时是否可以订阅某些事件?怎么样?
在我不能相信没有人注意到此之前或者我必须要丢失某些类别的情况下提交这个:
看来如果你window.history.pushState在iOS上做一个简单的操作,位置栏就不会更新,除非它是对用户手势的响应.状态本身确实被推动(正如您可以通过按下后退按钮按钮看到的那样).
这是我可以想出的最小的测试用例重新创建问题:
http://thelink.is/history-api-ios-bug
在支持History API的桌面浏览器上,您应该会看到位置栏中的URL每秒更改为/ 0,/ 1等.在iOS上 - 使用iPhone(运行iOS 4.3)和iPad(运行iOS 4.3.3)进行测试 - 位置栏不会更新,但是按下后退按钮会显示正确的先前位置(自测试案例开始就是404)没有后端逻辑来处理这些URL).
思考?解决方法?一个哭泣和拥抱的肩膀?
更新:此问题已在iOS 5中修复.
我有一个input字段,显示使用html5 <datalist>元素的列表.问题是,<datalist>浏览器自动完成也会显示历史列表(这是以前键入的值列表,不包括在内<datalist>).所以我只想摆脱history-list不是<datalist>.
如果我使用该autocomplete = "off"功能,这也会阻止<datalist>.
简而言之,我只想要的<datalist>不是历史.
我想阅读Android手机中的浏览器历史记录.
我已经做了一些文档阅读,然后我才知道我们可以通过android.provider.Browser类读取浏览器历史记录.它有:
final static Cursor
getAllVisitedUrls(ContentResolver cr)
Run Code Online (Sandbox Code Playgroud)
...返回的方法Cursor.
我可以获得帮助来处理Cursor或任何示例代码来获取浏览器历史记录吗?
我想以跨浏览器的方式使用jQuery和AJAX实现导航历史记录.我的方法是使用window.history.pushState并回退到/#!/url不支持的浏览器中的哈希URL window.history.pushState.
例如:
<a href="/home">home</a>
<a href="/about">about</a>
<a href="/contact">contact</a>
Run Code Online (Sandbox Code Playgroud)
在支持的浏览器window.history.pushState,点击这些链接之一,应该没有刷新页面更改地址http://domain.com/home,http://domain.com/about等.当浏览器不支持window.history.pushState,就应该使用片段标识符,即:http://domain.com/#!/ home,http://domain.com/#!/about.
更新:根据这里的反馈,我实现了Ajax SEO(git),它使用
旧的浏览器回退的HTML5历史API的jQuery地址/#!/url.
我想写一个简单的程序,显示我在一段时间内的网络活动(我访问过哪个网站,多少次等等).我大多使用谷歌Chrome浏览器.我发现Chrome会在这个位置存储浏览器历史记录(如果我错了请纠正我)
C:\Documents and Settings\<username>\Local Settings\Application Data\Google\Chrome\User Data\Default
Run Code Online (Sandbox Code Playgroud)
如何打开历史文件?它们没有任何文件扩展名.我无法使用记事本,SQLite浏览器打开.如何以编程方式访问此数据?我想知道它是哪种文件格式以及如何使用C#等编程语言来读取它.
使用JavaScript,有没有办法更新window.location.hash而无需滚动网页?
我有可点击的标题元素,可以直接在它们下方切换div的可见性.单击标题但我不希望页面滚动时,我想要历史记录中的/ foo #bar.因此,当离开/ foo #bar导航时,我将能够使用后退按钮,并且在返回时可以看到其ID在window.location.hash中的div.
这种行为可能吗?
browser-history ×10
javascript ×5
html5 ×4
back-button ×2
ios ×2
pushstate ×2
ajax ×1
android ×1
autocomplete ×1
browser ×1
deep-linking ×1
jquery ×1