jQuery 选择页面重定向

Posted

技术标签:

【中文标题】jQuery 选择页面重定向【英文标题】:jQuery Select a page redirect 【发布时间】:2019-07-07 01:54:10 【问题描述】:

我只是想知道,有没有一种方法可以检测页面重定向,即使用户只是将 URL 输入到搜索栏中?我知道有诸如a[href^="https://some-website.com" 之类的选择器,但是,我正在寻找比这更通用的东西。所有建议都表示赞赏。

更新:

更具体地说,我的目标是检测是否正在访问特定的 URL。然后,如果该用户未登录,则将他们重定向到登录 URL。我已经有 jQuery 来检查用户是否未登录和页面重定向,我只是缺少 URL 重定向检测。

【问题讨论】:

您可以使用onbeforeunload 事件来了解由于重定向而即将卸载页面的时间,但无法知道这是否是由于用户单击指向您自己的链接造成的站点,或另一个站点,或在导航栏中输入 URL,或完全关闭选项卡。 那么,通过使用onbeforeunload 事件,有没有办法从那里检测到正在加载的特定 URL,或者这个事件是否仅限于当前页面卸载之前发生的所有事情?如果我可以检测到重定向到特定 URL,这将解决我的问题。感谢您的帮助:) is this event limited to everything that happens before the current page unloads? 恐怕是这样。你只知道当前页面正在被卸载。没有可靠的方法可以从这个事件中检测到新 URL 将在哪里 - 或者即使有一个 啊,我明白了。好吧,我现在必须坚持通过锚标签来捕捉事件。希望最终会有办法做到这一点。感谢您的帮助。 【参考方案1】:

window.location.replace(...) 比使用 window.location.href 更好,因为replace() 不会在会话历史记录中保留原始页面,这意味着用户不会陷入无休止的后退按钮惨败。

<form>
   <input type="text" class="url">
   <input type="submit" class="submit">
</form>


<script>
    $(document).ready(function()
         $('.submit').on('click',function()
             // similar behavior as an HTTP redirect
             window.location.replace($('.url').val());

             // similar behavior as clicking on a link
             window.location.href = $('.url').val();
         );
    );
</script>

【讨论】:

我的目标不是创建页面重定向,我想弄清楚是否有一种方法可以检查页面是否已经被重定向到,以便我可以在用户之前执行一些代码到达该网址。如果我的问题含糊不清,请道歉 你是否保存了用户重定向到哪个url的记录。如果您有记录列表,您可以这样做 不幸的是没有,但是即使用户以前没有访问过该网站的 URL,我也需要能够检测到 URL 重定向。有关我要实现的目标的更多细节,我已经更新了问题 @A.Fletcher 只需通过 ajax 保存记录,登录用户访问的 url 后,您可以通过记录列表检测到它们,或者无法跟踪它们【参考方案2】:

所以,这绝对不是解决这个问题的最优雅的方式,我不想接受这个作为答案,希望能有更好的结果。但是,通过使用:

let path = window.location.pathname;

if(path == "/YourPathHere")
    //Some code here

只要用户访问该页面,就会执行此操作。我的主要问题是,当我之后重定向到登录页面时,这会导致 2 次重定向,并可能使网站上的用户感到困惑。

【讨论】:

【参考方案3】:

您应该查看一下 cookie。如果您的用户登录了您设置了一个 cookie,例如 "Login" = True

然后,如果您的 cookie "Login" != true window.location='url'

,请检查您必须登录的每个站点上的 cookie

【讨论】:

以上是关于jQuery 选择页面重定向的主要内容,如果未能解决你的问题,请参考以下文章

jQuery Mobile 301 重定向问题

通过 Jquery Form Validator 单击提交后如何重定向页面

如何使用 JQuery 重定向,加载另一个页面但在请求中发送了一些 POST 参数?

页面重定向后的Jquery函数?

如何使用带参数的jquery重定向到另一个页面

使用 JavaScript/jQuery 重定向到 ASP.NET MVC 中的另一个页面