该网站如何" minutesplease.com"在我的Chrome窗口关闭标签?

时间:2015-08-31 19:03:14

标签: google-chrome tabs web

网站" http://minutesplease.com/"做了我认为不可能的事情 - 它关闭了我的chrome中的一个标签(也未经我许可!)。

网站(不是扩展程序)如何关闭Chrome窗口中的标签?到目前为止,我确信网站可以做的最多就是停止向我提供数据包。在这种情况下,我只会收到连接错误,而不是标签终止。此外,它不仅关闭了一个标签,还关闭了一个不属于他自己的标签(!)。本网站与标签之间的唯一联系是它负责打开它。

1 个答案:

答案 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);
        }