Javascript Bookmarklet可防止网站自动注销
我在一个web应用程序中工作,该应用程序在一段时间不活动后自动将您注销。我对申请没有控制权。应用程序用于注销的相关代码如下: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
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处于打开状态,就可以指定此重写规则始终适用于此应用程序。我猜这是您的问题:
窗口,然后在新选项卡中修改代码
当您在同一选项卡中重新加载或导航时,为了防止当前窗口中出现相同的问题,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);