我正在使用Ajax和hash进行导航.
有没有办法检查是否window.location.hash改变了这样?
http://example.com/blah #123到http://example.com/blah #456
如果我在文档加载时检查它,它可以工作.
但是如果我有基于#hash的导航,那么当我按下浏览器上的后退按钮时它就不起作用了(所以我从#456跳到了#123).
它显示在地址框内,但我无法用JavaScript捕获它.
javascript ajax javascript-events fragment-identifier hashchange
我如何使用可能对当前页面产生一些影响的JavaScript操作,但也会更改浏览器中的URL,以便在用户点击重新加载或书签时使用新URL?
如果后退按钮会重新加载原始URL也会很好.
我试图在URL中记录JavaScript状态.
如何编写将在URL锚点的任何更改上执行的JavaScript回调代码?
javascript event-handling fragment-identifier dom-events hashchange
我在用:
$(window).bind( 'hashchange', function(e) { });
Run Code Online (Sandbox Code Playgroud)
将函数绑定到散列更改事件.这似乎适用于IE8,Firefox和Chrome,但不适用于Safari,我认为不是早期版本的IE.对于这些浏览器,我想禁用使用哈希和hashchange事件的JavaScript代码.
如果浏览器支持该hashchange事件,我可以检测到jQuery的方法吗?也许是jQuery.support......
我刚在http://ritter.vg上设置了我的新主页.我正在使用jQuery,但非常简单.
它使用AJAX加载所有页面 - 我将其设置为通过检测URL中的哈希来允许书签.
//general functions
function getUrl(u) {
return u + '.html';
}
function loadURL(u) {
$.get(getUrl(u), function(r){
$('#main').html(r);
}
);
}
//allows bookmarking
var hash = new String(document.location).indexOf("#");
if(hash > 0)
{
page = new String(document.location).substring(hash + 1);
if(page.length > 1)
loadURL(page);
else
loadURL('news');
}
else
loadURL('news');
Run Code Online (Sandbox Code Playgroud)
但我不能让后退和前进按钮工作.
有没有办法检测何时按下后退按钮(或检测哈希值何时更改)而不使用setInterval循环?当我尝试使用.2和1秒超时时,它固定了我的CPU.
我想要的是拥有更改页面一部分的链接,以及它的动态URL,我可以在其中指定变量等 #calendar=10_2010tabview=tab2
Check this for an exact example: 点击这里进行精确的演示
所以这是我需要的链接格式:
#calendar=10_2010&tabview=tab2
我必须像链接变量calendar和tabview这样我就可以改变一个页面上的多个万物而不realoading.
或者像http://www.wbhomes.com.au这样的其他格式,这正是我想要的,但是第一种格式也很好,但这更美观.
http://wbhomes.com.au/#/propertiesforsale/houseandland/quinnsbeach-waterland1要求
需要从例如邮件的任何地方访问,或者如果我只是在URL栏中写入.
链接应该在历史记录中,因此如果我按下后退或前进按钮,则需要访问该页面.
页面刷新也需要工作.
一些资源:
例子:
www.facebook.com - 您的个人资料页面上的侧边栏链接
www.wbhomes.com.au/ - 100%接近我想要的
一些教程:
请帮我!我从来没有找到任何解决方案来做到这一点,但我不想使用jquery或任何API,或任何库,我想有一个工作Javascript/AJAX和PHP脚本.
我一直在寻找JQuery库的URL哈希,但发现没有什么是好的.有"历史插件",但我们都知道它是有缺陷的并且不灵活.
我在div中加载我的页面.我需要一种方法来进行后退/前进以及url散列.
mydomain.com/#home
mydomain.com/#aboutus
mydomain.com/#register
Run Code Online (Sandbox Code Playgroud)
什么是最好的库可以处理所有这些?
我正在使用一个网站,其中所有内容都是使用jquery通过ajax回发呈现的.我正在使用Ben Alman的hashchange(http://benalman.com/projects/jquery-hashchange-plugin/)来管理哈希历史记录,它允许我为页面添加书签,使用后退按钮等等...一切都可以完美地应用于所有内容IE 9当然.在IE中存在一个小问题,"访问"链接未标记为已访问.在加载新内容之前单击链接后,您可以看到该链接在一瞬间变为紫色(已访问).但是,一旦单击后退按钮,链接就会显示为从未访问过.以下是我所谈论的一个例子:http: //jsfiddle.net/7nj3x/3/
这里是jsfiddle代码,假设你有jquery和head中引用的hashchange插件:
$(function(){
// Bind an event to window.onhashchange that, when the hash changes, gets the
// hash and adds the class "selected" to any matching nav link.
$(window).hashchange( function(){
alert("Hash changed to:"+location.hash);
var hash = location.hash;
// Set the page title based on the hash.
document.title = 'The hash is ' + ( hash.replace( /^#/, '' ) || 'blank' ) + '.';
//simulate body being rendered by ajax callback
if(hash == ""){ …Run Code Online (Sandbox Code Playgroud) 见 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有什么特别之处?哈希变化?
我应该使用哪个来覆盖我的浏览器后退和前进按钮?
我有一些代码(由另一个开发人员编写)在WordPress内部进行AJAX页面加载(例如,没有页面重新加载),当您单击导航项时,AJAX刷新主要内容区域.我的问题是它在IE7中被破坏了,我不知道从哪里开始调试.
原来的开场线是
var queue = 0;
$('document').ready(function() {
window.addEventListener("hashchange", hashChange, false);
// Define window location variables
var windowHost = window.location.host,
windowHash = window.location.hash,
windowPath = window.location.pathname;
Run Code Online (Sandbox Code Playgroud)
但是我改变它们以addEventListener根据该方法是否存在来作出条件限制.一些研究告诉我,该方法在旧版本的IE中不可用(例如在我的情况下为7).此外,IE7调试控制台将其识别为不可用的方法,因此非常清楚.我重写了以下行,但代码仍然无法正常工作:
var queue = 0;
$('document').ready(function() {
if(window.addEventListener) {
window.addEventListener("hashchange", hashChange, false);
}
else if (window.attachEvent) {
window.attachEvent("hashchange", hashchange, false);
}
// Define window location variables
var windowHost = window.location.host,
windowHash = window.location.hash,
windowPath = window.location.pathname;
Run Code Online (Sandbox Code Playgroud)
可以在此pastebin中查看完整的原始脚本:http://pastebin.com/Jc9ySvrb
javascript jquery internet-explorer fragment-identifier hashchange
hashchange ×10
javascript ×8
ajax ×5
jquery ×4
dom-events ×1
history.js ×1
html5 ×1
navigation ×1
php ×1
url ×1