因此,我们有一个带有工单表的父选项卡,然后是一个包含实际工单的子选项卡。然而,这并不是真正的父/子关系,因为我使用的是 target="_blank" 点击而不是 window.open() 事件。
修复有点杂乱无章,但它确实有效。只需将更改添加到“父”选项卡。首先,将 Javascript 中的 gbRefreshStale 全局布尔值添加到页面并将其值设置为 0,如下所示:
var gbRefreshStale = 0;
其次,在每次 target="_blank" 单击时,使用 jQuery 进行拦截,如下所示:
$('A[target=_blank]').click(function(){
setTimeout('gbRefreshStale=1;clearTimeout();',500);
return true;
});
然后,第三,您将需要此 mouseenter 事件作为页面标题:
$('#header').mouseenter(function(){
// assuming you called your banner/header as #header
if (gbRefreshStale) {
gbRefreshStale = 0;
location.href = location.href;
}
});
这里的效果是为工单打开了一个新选项卡,但如果有人关闭该选项卡并将鼠标移过标题(他们可能会这样做,因为他们刚刚关闭了一个子选项卡),父选项卡将刷新。如果打开和关闭多个选项卡,这也有效,并且该系统防止父选项卡循环刷新。超时是必要的,因为否则某人的鼠标可能会在该选项卡打开之前穿过父级的#header 部分。