Javascript Bookmarklet可防止网站自动注销

Javascript Bookmarklet可防止网站自动注销,javascript,bookmarklet,Javascript,Bookmarklet,我在一个web应用程序中工作,该应用程序在一段时间不活动后自动将您注销。我对申请没有控制权。应用程序用于注销的相关代码如下: var windoc = window.document; var timeoutID; function AlertUser() { var msg = 'Session expires in 90 seconds. Continue with this session?'; var preConfirmTime = new Date(); i

我在一个web应用程序中工作,该应用程序在一段时间不活动后自动将您注销。我对申请没有控制权。应用程序用于注销的相关代码如下:

var windoc = window.document;
var timeoutID;

function AlertUser() {
    var msg = 'Session expires in 90 seconds. Continue with this session?';
    var preConfirmTime = new Date();
    if (confirm(msg)) {
        var postConfirmTime = new Date();
        if (postConfirmTime.getTime() - preConfirmTime.getTime() > 90000) {
            alert('Sorry, your session has already expired.');
          window.location = '/Logout.aspx';
        } else {
           var img = new Image(1,1);
           img.src = '/Reconnect.aspx';
           timeoutID = window.setTimeout('AlertUser()','3510000'); 
        }
    } else {
      window.location = '/Logout.aspx';
    }
}

function ResetTimeout(delay) {
    window.clearTimeout(timeoutID);
    timeoutID = window.setTimeout('AlertUser()', delay);
}

timeoutID = window.setTimeout('AlertUser()','3510000');
由于注销确实破坏了我的工作流程,我希望在会话即将到期时,有一个书签来确认
OK
。我想我可以用

javascript:window.confirm = function(){return true;};

但这只在我单击bookmarklet时运行。有没有办法让它自动在活动(IE 10)浏览器选项卡中运行(如果我用应用程序打开一个新选项卡也可以),并让它不断检查?顺便说一下,我不能安装任何浏览器扩展。与网页交互的唯一方式是通过bookmarklet。

如果您可以在本地安装其他程序,请使用Charles Proxy(使用其“重写”工具)等程序在应用程序交付到浏览器时对其进行更改。只要Charles处于打开状态,就可以指定此重写规则始终应用于此应用程序。

如果可以在本地安装其他程序,请使用Charles Proxy之类的程序(使用其“重写”工具)在将应用程序交付到浏览器时对其进行更改。只要Charles处于打开状态,就可以指定此重写规则始终应用于此应用程序。

如果可以在本地安装其他程序,请使用Charles Proxy之类的程序(使用其“重写”工具)在将应用程序交付到浏览器时对其进行更改。只要Charles处于打开状态,就可以指定此重写规则始终应用于此应用程序。

如果可以在本地安装其他程序,请使用Charles Proxy之类的程序(使用其“重写”工具)在将应用程序交付到浏览器时对其进行更改。只要Charles处于打开状态,就可以指定此重写规则始终适用于此应用程序。

我猜这是您的问题:

  • 如果运行bookmarklet,它将阻止注销当前页面
  • 右键单击或按住ctrl键并单击当前页面上的链接以打开一个新选项卡,该新选项卡最终会将您注销
  • 可能的解决方案:除了当前代码之外,bookmarklet还在页面中的每个链接上附加一个click事件监听器。如果侦听器检测到CTRL+click,它将阻止默认操作,并打开
    窗口,然后在新选项卡中修改代码

    当您在同一选项卡中重新加载或导航时,为了防止当前窗口中出现相同的问题,bookmaklet可以打开一个小的子窗口,该子窗口监视其父窗口。如果监视器检测到父项不再被正确修改,它可以重新应用代码


    我想知道的一件事是,如果页面长时间处于打开状态而没有任何活动,当前的解决方案是否真的有效。服务器可能有自己的内部会话超时,而不管您在客户端做了什么修改。如果是这样的话,可以使用通过AJAX进行良性后台页面提取的计时器来防止这种情况。

    我猜这就是您的问题:

  • 如果运行bookmarklet,它将阻止注销当前页面
  • 右键单击或按住ctrl键并单击当前页面上的链接以打开一个新选项卡,该新选项卡最终会将您注销
  • 可能的解决方案:除了当前代码之外,bookmarklet还在页面中的每个链接上附加一个click事件监听器。如果侦听器检测到CTRL+click,它将阻止默认操作,并打开
    窗口,然后在新选项卡中修改代码

    当您在同一选项卡中重新加载或导航时,为了防止当前窗口中出现相同的问题,bookmaklet可以打开一个小的子窗口,该子窗口监视其父窗口。如果监视器检测到父项不再被正确修改,它可以重新应用代码


    我想知道的一件事是,如果页面长时间处于打开状态而没有任何活动,当前的解决方案是否真的有效。服务器可能有自己的内部会话超时,而不管您在客户端做了什么修改。如果是这样的话,可以使用通过AJAX进行良性后台页面提取的计时器来防止这种情况。

    我猜这就是您的问题:

  • 如果运行bookmarklet,它将阻止注销当前页面
  • 右键单击或按住ctrl键并单击当前页面上的链接以打开一个新选项卡,该新选项卡最终会将您注销
  • 可能的解决方案:除了当前代码之外,bookmarklet还在页面中的每个链接上附加一个click事件监听器。如果侦听器检测到CTRL+click,它将阻止默认操作,并打开
    窗口,然后在新选项卡中修改代码

    当您在同一选项卡中重新加载或导航时,为了防止当前窗口中出现相同的问题,bookmaklet可以打开一个小的子窗口,该子窗口监视其父窗口。如果监视器检测到父项不再被正确修改,它可以重新应用代码


    我想知道的一件事是,如果页面长时间处于打开状态而没有任何活动,当前的解决方案是否真的有效。服务器可能有自己的内部会话超时,而不管您在客户端做了什么修改。如果是这样的话,可以使用通过AJAX进行良性后台页面提取的计时器来防止这种情况。

    我猜这就是您的问题:

  • 如果运行bookmarklet,它将阻止注销当前页面
  • 右键单击或按住ctrl键并单击当前页面上的链接以打开一个新选项卡,该新选项卡最终会将您注销
  • 可能的解决方案:除了当前代码之外,bookmarklet还在页面中的每个链接上附加一个click事件监听器。如果侦听器检测到CTRL+click,它将阻止默认操作,并打开
    窗口,然后在新选项卡中修改代码

    防止当前窗口中出现相同问题的步骤
    setInterval(function(){
        clearTimeout(timeoutID);     // stop the AlertUser from happening
        var img = new Image(1,1);
        img.src = '/Reconnect.aspx'; // stop server session from expiring
    },15*60*1000);
    
    if (typeof anti_timeout != 'undefined') {
        clearInterval(anti_timeout);   // clear previous anti-timeout timer
    }
    anti_timeout = setInterval(function(){
        clearTimeout(timeoutID);
        var img = new Image(1,1);
        img.src = '/Reconnect.aspx';
    },15*60*1000);