后退/下一个按钮在动态构建的网页(AJAX)

back/next button in dynamically constructed webpage (AJAX)

本文关键字:网页 AJAX 构建 动态 下一个 按钮 后退      更新时间:2023-09-26

我的问题是关于在AJAX(动态)网页上使用(浏览器的)后退和下一步按钮。

我自己想出的解决办法:

setInterval(function(){    
                if (location.hash != hash)
                {
                   hash = location.hash;
                   app.url = window.location.href.toString().replace('http://xxxxx.nl/xxxx/#!/','')
                   app.handleURL();
                }
            }, 500);

该函数每0.5秒读取url(哈希值)并将其与上次存储的url(哈希值)进行比较。如果url已经改变(回/下一个被推),它运行handleUrl(),它运行更多的函数来动态构建我的页面。

的问题是,这种工作,但当我点击一个html [A]元素或当我改变url以其他方式(javascript),该内容将被加载两次,因为setInterval()…功能。我如何构建我的HTML/Javascript,使我的内容总是加载一次,

  • 一次当我push back/next

  • 一旦我点击一个HTML元素/使用Javascript函数运行时

我在谷歌上搜索了一个解决方案,请帮助!

您不需要计时器来检查它。只需使用onhashchange事件,并在事件被调用时触发AJAX调用。这个事件在ie8以下的版本中不支持,所以如果你需要IE支持,你的方法似乎很好。

同样,对于a元素调用它们两次也没有意义,因为间隔没有理由仅仅因为使用a元素更改了散列而调用AJAX加载器两次。您可能有一个事件侦听器附加到a元素,导致它加载AJAX内容,这是不需要的,因为您正在检测散列中的任何更改,无论它是如何更改的。

我建议使用库。制定自己的解决方案将是棘手的。看看这些:

http://www.asual.com/jquery/address/docs/使用示例http://benalman.com/projects/jquery-bbq-plugin/