网站" http://minutesplease.com/"做了我认为不可能的事情 - 它关闭了我的chrome中的一个标签(也未经我许可!)。
网站(不是扩展程序)如何关闭Chrome窗口中的标签?到目前为止,我确信网站可以做的最多就是停止向我提供数据包。在这种情况下,我只会收到连接错误,而不是标签终止。此外,它不仅关闭了一个标签,还关闭了一个不属于他自己的标签(!)。本网站与标签之间的唯一联系是它负责打开它。
答案 0 :(得分:0)
源代码位于此单个javascript文件中=> misc.js
该网站以弹出窗口的形式开放新网站,然后在以下功能中使用Javascript关闭弹出窗口。
function killIt(i)
{
if(!popupWindow[i].closed) popupWindow[i].close();
stopCountDown(i);
}
所以它不是一个窗口,只是让它看起来像一个窗口:)
查看函数popSite()
(粘贴在下面)以了解它如何以弹出窗口的形式打开新网址。
function popSite()
{
var url = fixUrl(document.getElementById("url").value);
var operaError = "In order to use this feature, you must allow popups for this site. Simply unblocking a blocked-popup will not do.";
try
{
var newWindow = window.open(url);
if (newWindow == null )
{
alert("In order to use this feature, you must allow popups for this site.");
return;
}
if (window.opera)
if (!newWindow.opera)
{
alert(operaError);
return;
}
}
catch(err)
{
//This is here to account for inexplicable behavior in opera
}
nOpenWindows++;
if(nOpenWindows == 1) updateInterval = setInterval("updateTime()",100);
newWindow.focus();
nWindows = popupWindow.push(newWindow);
var index = nWindows - 1;
alive[index] = true;
timeRequest[index] = toMilliseconds(document.getElementById("time").value);
var d = new Date();
popStart[index] = d.getTime();
//Create a new entry in the table of timed sites.
var templateCopy = document.getElementById("templateRow").cloneNode(true);
provideIds(templateCopy,index);
document.getElementById("siteList").appendChild(templateCopy);
if(removePrefix(url) =="") windowURL[index] = "BLANK"; else windowURL[index] = removePrefix(url).toUpperCase();
var siteLink = document.getElementById("site"+index);
siteLink.innerHTML = windowURL[index];
if (timeRequest[index] <= warningTime()) haveWarned[index] = 1; else haveWarned[index] = 0;
pauseTime[index] = 0;
alertWindow[index] = null;
alertWindowTimeout[index] = null;
//Now display it
templateCopy.style.display = "";
addToActiveList(index);
}
这里是“杀死”窗口的代码(即弹出窗口)
function killIt(i)
{
if(!popupWindow[i].closed) popupWindow[i].close();
stopCountDown(i);
}