如何在 JavaScript 中通过弹出窗口被阻止时打开新窗口

4
如何在IE和Firefox中弹出窗口被阻止时通过JavaScript打开新窗口。
以下是代码:
<%@ Page language="c#" AutoEventWireup="false" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > 

<html>
  <head>
    <title>SessionRedirect</title>
    <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
    <meta name="CODE_LANGUAGE" Content="C#">
    <meta name=vs_defaultClientScript content="JavaScript">
    <meta name=vs_targetSchema content="http://schemas.microsoft.com/intellisense/ie5">
  </head>
  <body MS_POSITIONING="GridLayout">

    <form method="post" name="frmRedirect">   
        <input type="hidden" name="email" value="<%=Session["Email"].ToString() %>" />
        <input type="hidden" name="pass" value="<%= Session["PWD"].ToString() %>" />
        <input type="hidden" name="User" value="<%= Session["User"].ToString() %>" />
    </form>

<script type="text/javascript"> 

    if(frmRedirect.User.value == "P")
    {
        window.open("", "Partner", "height=650,width=1075,left=100,top=100,status=1,scrollbars=1,location=1,toolbar=1;resizable=1");
        frmRedirect.target="Partner";       
        frmRedirect.action = "http://pli.cmsstag/partnerzone/index.aspx";
        document.frmRedirect.submit(); 
        location.replace("index.aspx");
    }
    else
    {
        window.open("", "Student", "height=650,width=1075,left=100,top=100,status=1,scrollbars=1,location=1,toolbar=1;resizable=1");
        frmRedirect.target="Student";
        frmRedirect.action = "http://pli.cmsstag/studentzone/index.aspx";
        document.frmRedirect.submit(); 
        location.replace("index.aspx");
    }   

</script>

<%
    Session.Remove("registration");
    Session.Remove("User");
    Session.Remove("UserId");
    Session.Remove("UserLoggedIn");
    Session.Remove("AgentCode");
    Session.Abandon();
%>

  </body>
</html>

所有上述代码都能正常工作,直到浏览器阻止了弹出窗口。我正在尝试通过window.open打开新窗口,请参见上面的代码。我希望无论如何都能打开窗口,如果有弹出窗口拦截器,它也应该打开。 请帮忙!
5个回答

7

window.open创建的弹出窗口可能被弹出拦截器阻止。你可以添加一个像弹出窗口一样的新div层来解决这个问题。

JavaScript模态对话框

使用div弹出窗口存在以下问题:

下拉列表会遮挡这些弹出窗口。

在调整窗口大小时需要更改位置等。

等等。

在上述页面中,许多div弹出窗口的问题已经得到解决。


3
@Manoj -- 如果你不排斥使用框架,你可以使用jQuery UI对话框小部件。 - tvanfosson

7

弹出拦截器仅会阻止意外的弹出窗口。

如果您的弹出窗口是在处理用户的点击事件时显示的,那么您的弹出窗口可能不会被弹出拦截器阻止。

只要用户单击按钮或链接来打开弹出窗口,当前的弹出拦截器就可以正常工作。


2

最简单的方法是将其绑定到按钮点击事件。不需要添加代码,它旨在防止人们做一些可疑的事情(比如关闭时弹出窗口或大量弹出窗口)。

正如提到的那样,jQuery可以让您获得“弹出窗口”或模态对话框,但不能很好地打开OP所请求的“新窗口”。


1
想法的代码:
<div style="display:none; position: absolute;z-index:99" id="display">you div info here</div>


<script langauge="javascript">

function showPopup ()
{
  var div = document.getElementById("display");

  div.style.display = "inline";

  div.style.top = 20;
  div.style.left = 233;


}

</script>

如果您想处理选择框,则必须编写额外的代码。 - rahul
嗨,凯文,请查看我的上述代码。你有任何建议吗?使用上述代码。 - Manoj Singh

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接