jQuery .unload()函数问题,仅在单击特定链接时激活

时间:2014-12-11 23:56:18

标签: javascript jquery

我正在使用bootstrap构建一个站点,并创建了一个带有一些链接的导航栏。索引页面包含导航栏和一个带有单个div的主体,它通过jQuery的ajax功能(取决于在导航栏中单击的链接,该页面显示在div中)拉入内容(我创建的页面)。 / p>

该网站适用于有权根据我创建的文件夹设置访问网页的用户(如果用户有权访问文件夹,则可以查看其中的网页)。它在大多数情况下都可以正常工作,但是当无权访问页面的用户点击链接时,我认为错误页面会显示在div中。但是,它只是将用户从网站完全弹回错误页面。

我的解决方案是使用jQuery unload事件。 我把它放在.js文件中:

$( window ).unload(function() {
  alert( "Bye now!" );
});

但是当我点击任何外部链接,关闭浏览器或刷新页面时,现在会显示一个弹出窗口。我只希望在用户点击特定链接(具有id类的链接)时激活它。我想让他们知道他们点击了他们无法访问的链接,如果他们没有留在页面上,他们将被转发到错误页面。我该怎么做呢?

- Update-- 这是JSFiddle Link to JSFiddle

因此,例如,所有用户都可以访问页面“技术”,因此当他们点击导航栏上的链接时,会获取并显示在div“结果”中。但是,只有部分用户可以访问页面“检查”;对于那些有权访问该页面的人,对于那些没有它的人,将它们从我的页面重定向到外部错误页面。我想要弹出警告,以便他们知道他们没有访问权限,如果他们按照他们打开的链接,他们将最终出现在错误页面上。

- 更新2-- 使用Genuis先生的代码让它工作,但我有一个最后的问题。我实现了代码,并为没有访问链接的用户显示弹出窗口(正是我想要发生的事情),但当他们单击确定按钮或单击弹出窗口上的x按钮时,它们仍会转发给错误页面。 无论如何禁用它?我尝试使用此代码更新卸载功能(Genuis先生提供的),并且它可以工作(它为用户提供了一个选项,可以保留当前页面,防止加载错误页面),但弹出功能也会激活用户尝试关闭浏览器页面。我只想在点击链接时触发它。 这是我使用的代码:

$(window).bind('beforeunload', function(){ return '>>>>>Before You Go<<<<<<<< \n Your custom message go here'; })

1 个答案:

答案 0 :(得分:0)

我真的不确定你的方法是否适合给定的问题。

关于有条件地激活窗口卸载事件,

在链接点击事件中移动该卸载事件连接,这样您只在需要时才连接窗口卸载事件。并不总是!

<强>更新

如下所示。仅供参考。

警告:我觉得这种方法有异味。

$(".link").click(function(){
   if(true){//Your condition check goes here.

      $( window ).unload(function() {
        alert( "Bye now!" );
       });
    }
    else{
        window.location.href = "someurl";
    }
});