jQuery   发布时间:2022-04-19  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了jQuery地址:验证用户是按前进按钮而不是后退按钮大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
编辑3:
这个 jsFiddle适用于插件,我几乎拥有它.

编辑2:我做了一个fiddle.I无法让插件在那里工作,但也许它更容易分析.

在我正在构建的网页中,通过Ajax加载文章(帖子)和新页面.在加载新的Ajax内容的同时,地址栏会更改(使用jQuery Address plugin).

所以正常的导航会像这样:

请注意,在此导航中,没有按下任何浏览器按钮,退出文章7时,网站返回到其先前的URL,在这种情况下是page3.

用户按下后退或前进按钮时,插件不会检测到.我设法找出了一种方法来了解用户何时按下后退或前进按钮:

每次添加内容并更改地址时,我都会将新地址存储在一个数组中.如果用户按下后退或前进按钮,我会这样分析:

这适用于这种导航:

在我的情况下,它适用于后退按钮.但是,如果用户从/ article7按下ForWARD到/ page3,该函数会将其读作BACk.这是一个了解我的意思的例子:

用户位于/ page4并按下BACk – > new_page = / page3等于penultimate_page_in_array(/ page3)=>背部

用户位于/ page3并按下BACk – > new_page = / article7等于penultimate_page_in_array(/ article7)=>背部

user在/ article7中并按BACk – > new_page = / page3等于penultimate_page_in_array(/ page3)=>背部

用户位于/ page3并按下BACk – > new_page = / page2等于penultimate_page_in_array(/ page2)=>背部

用户在/ page2并按下转发 – > new_page = / page3不等于penultimate_page_in_array(/)=>向前

用户位于/ page3并按下转发 – > new_page = / article7不等于penultimate_page_in_array(/ page2)=>向前

user在/ article7中并按下ForWARD – > new_page = / page3,其等于penultimate_page_in_array(/ page3)=> BACK(这里的值应为FORWARD)

如何引入另一个确定false BACk应该转发的语句?

编辑:

这是我正在使用的代码,我不确定它是否有助于解决问题,但这里是:

var site_url = 'www.mysite.com',last_visited_url = '',just_visited_url = $.address.baseURL().replace(site_url,''),visited_pages_array = [just_visited_url],page_number = '';

访问新页面时:
ajax调用,然后:

last_visited_url = just_visited_url;
page_number = $('a.next_page_link').attr('href').replace(site_url,''); // /page3 for example
$.address.state(site_url).value(page_number);
just_visited_url = page_number;
visited_pages_array.push(just_visited_url);

加载文章时:
ajax调用,然后:

article_url = $('a.article_title').attr('href').replace(site_url,''); // /article7 for example
last_visited_url = just_visited_url;
$.address.state(site_url).value(article_url);
just_visited_url = article_url;
visited_pages_array.push(just_visited_url);

当存在一篇文章时:

last_visited_url = just_visited_url;
$.address.state(site_url).value(page_number); // This page number is the last page_number value
just_visited_url = page_number;
visited_pages_array.push(just_visited_url);

用户按下某些浏览器按钮时执行此代码

$.address.externalChange(function() {

    var newPage = $.address.baseURL().replace(site_url,'');

    if (visited_pages_arraY[visited_pages_array.length-2] == newPagE) {

        visited_pages_array.splice(visited_pages_array.length-1,1);
        console.log('BACK pressed');

    } else if (visited_pages_array.length > 1) {

        visited_pages_array.push(newPagE);
        console.log('FORWARD pressed');

    } else {

        console.log('refresH pressed');

    }

});

解决方法

我能想到的最快,最简单的解决方案如下:

您的问题是,当您的“下一页”和“上一页”相同时,您的代码会将“前进”检测为“返回”,因为以下条件为真:

visited_pages_arraY[visited_pages_array.length-2] == newPage

你的情况下我会推荐两件事:

>请勿删除您刚刚从visited_pa​​ges_array中删除的地址,如下所示:

visited_pa​​ges_array.splice(visited_pa​​ges_array.length-1,1);

这样,visited_pa​​ges_array将保留所有访问过的页面的列表.
>创建一个名为current_page_index的新“全局”变量,该变量将保存当前页面在visited_pa​​ges_array中的索引,如果您当前处于最后访问的页面,则可以保留visited_pa​​ges_array.length-1,如果使用“后退”按钮,则保留较低值.

现在你所要做的就是改变你的状况:

if (visited_pages_arraY[visited_pages_array.length-2] == newPagE)

至:

if (visited_pages_arraY[current_page_index-1] == newPagE)

笔记:

>当您检测到后退单击时 – 执行以下操作:current_page_index–;当你检测到一个ForWARD do:current_page_index;
>当用户点击导航以移动另一页时,请务必执行:visited_pa​​ges_array.splice(current_page_index 1,visited_pa​​ges_array.length-current_page_index-1); (在删除所有已保存的前锋之前)将新地址推送到visited_pa​​ges_array的末尾.并且当前设置current_page_index;

我希望这很清楚,我无法让你的jsfiddle工作,所以尽可能清楚地解释. GL

本图文内容来源于网友网络收集整理提供,作为学习参使用,版权属于原作者。

大佬总结

以上是大佬教程为你收集整理的jQuery地址:验证用户是按前进按钮而不是后退按钮全部内容,希望文章能够帮你解决jQuery地址:验证用户是按前进按钮而不是后退按钮所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。