浏览器是否自动屏蔽了弹出窗口的检测

原创 2006年06月20日 08:14:00

我在使用MSN Webmessenger时,发现它可以告诉我使用了弹出窗口阻挡功能,在分析代码后,提取出下面的程序,可以直接使用。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>弹出窗口检查</TITLE>
<META http-equiv=Content-Type content="text/html; charset=utf-8"><SCRIPT language=javascript>
function openwindow(u,n,w,h)
{
    var optionstring = "height=" + h + ",width=" + w + ",menubar=no,titlebar=yes,resizable=yes,scrollbars=no,status=no,toolbar=no";                       
    window.open(u,n,optionstring);
}

var    spbw = false;
function ShowBlockerWarning()
{
    return spbw;
}

function Init()
{
    if (true == Detect())
    {
        spbw = true;
    }
}

function Detect()
{
    var e = false;
    var pw1 = null;
    var pw2 = null;
    try
    {
        do
        {
            var d = new Date();
            var wName = "ptest_" + d.getTime();
            var testUrl = IsYBI() ? "popupTest.aspx" : "";

            pw1 = window.open(testUrl,wName,"width=0,height=0,left=5000,top=5000",true);
            if (null == pw1 || true == pw1.closed)
            {
                e = true;
                break;
            }
            pw2 = window.open(testUrl,wName,"width=0,height=0");
            if (null == pw2 || true == pw2.closed)
            {
                e = true;
                break;
            }
            if (IsYBI())
            {
                if (pw1 != pw2)
                {
                    e = true;
                    break;
                }
            }
            pw1.close();
            pw2.close();
            pw1 = pw2 = null;
        }
        while(false);
    }
    catch(ex)
    {
        e = true;
    }
    if (null != pw1)
    {
        try { if (!pw1.closed) pw1.close(); } catch(ex){}
    }
    if (null != pw2)
    {
        try { if (!pw2.closed) pw2.close(); } catch(ex){}
    }
    return e;
}

function IsYBI()
{
    var i = false;
    try
    {
        var xObj = new ActiveXObject("YBIOCtrl.CompanionBHO");
        if (xObj==null) i = false;
        else i = true;
    }
    catch(ex) { i = false; }
    return i;
}

Init();

</SCRIPT>


<SCRIPT language=javascript>
var warningMessage = "检查到使用了弹出窗口阻挡器!Pop-up blocker detected.";
var warningInformation = "请确保浏览器允许本网站打开弹出窗口。";
var g_blockerHtml;
g_blockerHtml  = "<div><table border=1 cellspacing=0 cellpadding=0>";
g_blockerHtml += "<tr><td>" + warningMessage + "</td></tr>";
g_blockerHtml += "<tr><td>" + warningInformation + "</td></tr>";
g_blockerHtml += "</table></div>";
</SCRIPT>

<SCRIPT language=javascript>

var messengerWindow = null;
function OnLoad_WelcomePage()
{
        if ( ShowBlockerWarning() )
        {
            var messageObject = document.getElementById("noPopHtml");
            if (null != messageObject)
            {
                messageObject.innerHTML = g_blockerHtml;
            }
        }
}
</SCRIPT>
</HEAD>
<BODY onload=OnLoad_WelcomePage();>

<SPAN id=noPopHtml>

</BODY>
</HTML>

 

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

理解@ComponentScan注解

在spring mvc当中经常可以看到@ComponentScan这个注解, 那么怎么样去理解它呢? 1.配置视图控制器 [java] view plain copy print?package co...

Spring 使用@ComponentScan扫描注解包

@Configuration @ComponentScan(basePackages = "org.example", nameGenerator = MyNameGenerator.class) p...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

spring组件扫描<context:component-scan/>使用详解

好文章,原文地址:http://blog.sina.com.cn/s/blog_57769b7b0100tt5x.html   关于spring自动检测组件的使用方式网上太多了,而且也不是我记录的...

<context:component-scan>使用说明

在xml配置了这个标签后,spring可以自动去扫描base-pack下面或者子包下面的java文件,如果扫描到有@Component @Controller@Service等这些注解的类,则把这些类...

怎样去理解@ComponentScan注解

在Spring mvc当中经常可以看到@ComponentScan这个注解, 那么怎么样去理解它呢? 配置视图控制器 package com.apress.prospringmvc.bookstore...

《深入理解java虚拟机》学习笔记1——Java内存结构

java虚拟机规范规定的java虚拟机内存其实就是java虚拟机运行时数据区,其架构如下: 其中方法区和堆是由所有线程共享的数据区。 Java虚拟机栈,本地方法栈和程序计数器是线程隔离的数...

深入理解java虚拟机学习笔记(一)

纲领   Java的运行时数据区为:      A.     方法区   -----------(线程共有)     B.   ...

《深入理解java虚拟机》学习笔记2——Java内存溢出实例

通过简单的小例子程序,演示java虚拟机各部分内存溢出情况: (1).java堆溢出: Java堆用于存储实例对象,只要不断创建对象,并且保证GC Roots到对象之间有引用的可达,避免垃圾收集器回收...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)