gpt4 book ai didi

javascript - 使用 $(window).bind( 'hashchange' , function(e) 两次调用 ajax 搜索函数

转载 作者:行者123 更新时间:2023-11-29 18:21:35 25 4
gpt4 key购买 nike

我正在研究 ajax 搜索。ajax 函数在 onblur 事件上被调用。下面是示例代码。

function search_ajax(sh_val,sh_act)
{
....some search code.....
window.location.hash = sh_val+'@'+sh_act;

}

当点击浏览器后退或前进按钮时,我已经使用来自 url 的哈希值恢复搜索的另一个功能。这适用于后退和前进按钮。

$(window).bind( 'hashchange', function(e) {
var page=location.hash.slice(1)
if (page!="" && page!="p")
{
search_ajax(page,'catsh');
}
return false;
});

但是当我搜索 ajax 搜索功能被调用两次时,我遇到了问题。 $(window).bind( 'hashchange') 在我搜索时也会被调用。有没有办法只为浏览器的后退和前进按钮或任何其他解决方案调用上述函数?

我该如何解决这个问题?

我将不胜感激任何帮助..

最佳答案

可能是我没看懂,为什么要把hashchange函数绑定(bind)到window上???这没有任何意义。我自己的应用程序中有类似的搜索功能。没那么复杂。我的搜索功能(比方说)与您的相同:

function search_ajax(sh_val,sh_act)
{
....some search code.....
window.location.hash = sh_val+'@'+sh_act;
}

另一个在每次页面加载时执行一次:

(function() {
var page=location.hash.slice(1)
if (page!="" && page!="p")
{
search_ajax(page,'catsh');
}
return false;
})();

因此,如果您单击搜索按钮,则会调用搜索功能。哈希已更改。添加了进入浏览器历史记录的一步。

然后另一个搜索,历史上的另一个步骤被添加。

然后是后退按钮。页面再次加载,因此执行匿名功能。检测到哈希,因此执行搜索。并且hash改变了,但是因为hash和以前一样,所以链接是一样的,所以没有重复的步骤被添加到历史中。

关于javascript - 使用 $(window).bind( 'hashchange' , function(e) 两次调用 ajax 搜索函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18118752/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com