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 Form Validator 单击提交后如何重定向页面