如何在不使用window.close()的情况下在chrome中使用javascript关闭当前选项卡?



我想创建一个用于进行在线考试的网页,因此如果用户切换到其他选项卡,则必须在第一次查看后结束考试,并且必须关闭当前选项卡。

我已经在 Javascript 中使用了页面可见性 API 来查找用户切换到其他tabs.window.close()在 chrome 中不起作用的视图数。

if(document.hidden==true){
views++;
if(views==1){
close_window();return false();
}
alert( "Your view count is: <b>" + views +
". " + "Your page current state is: " +
document[(prefix === "" ? "v" : prefix + "V") + "isibilityState"] + "</b><br />");
}
}
function testPageVisibilityApi() {
if (prefix === null)
document.getElementById("log").innerHTML = "Your browser does not support Page Visibility API";
else {
document.addEventListener(prefix + "visibilitychange", countView);
countView();
}
}

有什么建议吗?

要关闭特定选项卡,您可以实现如下函数:

(function() {
'use strict';
$("#close_page").click(function() {
var confirm_result = confirm("Are you sure you want to quit?");
if (confirm_result == true) {
window.close();
}
});
})();
var Activetab;
window.onfocus = function () { 
Activetab = true; 
}; 
window.onblur = function () { 
Activetab = false; 
}; 
// check periodically 
setInterval(function () { 
console.log(window.Activetab ? 'active' : 'inactive'); 
}, 2000);

这可以帮助您检测用户何时更改选项卡,这工作正常并从此处引用更新

var Activetab;
window.onfocus = function () { 
Activetab = true; 
}; 
window.onblur = function () { 
Activetab = false; 
// window.close();
open("yourpathoffile/filename.ext", '_self').close(); // or you can 
try directly window.close
}; 
// check periodically 
setInterval(function () { 
console.log(window.Activetab ? 'active' : 'inactive'); 
}, 2000);

JS:

function close_window() {
if (confirm("Close Window?")) {
close();
}
}

.HTML:

<a href="javascript:close_window();">close</a>

或:

<a href="#" onclick="close_window();return false;">close</a>

我们在此处添加了return false以防止事件的默认行为。否则,浏览器将尝试转到该 URL。

请参阅这篇关于火狐浏览器的文章。

最新更新