【问题标题】:Popup Window with javascript - open new popup in the old popup window带有 javascript 的弹出窗口 - 在旧的弹出窗口中打开新的弹出窗口
【发布时间】:2013-06-06 16:48:28
【问题描述】:

一个片段:-

     // listen for clicks, opens a hyperlink attached to the event. //
                 $("#canvas").click(function popMessage(e) {
                     $("#canvas").hide();
                     // hyperlink opens a new window upon click on the bubble
                     return !window.open('About.aspx?info=' + info, "pop", "resizable,width=1000,height=600,");
                 });

这很好用。

但是,我正在考虑这样一个场景,一个人打开 10 个不同的弹出窗口,并且对哪个窗口引用了哪个点击感到困惑。

想到我可以,一次只允许一个弹出窗口。

第一次点击时,会打开一个新的弹出窗口。 每次下一次点击,旧的弹出窗口都会被新的点击替换。

最后,当父页面关闭时,弹出窗口关闭。

我应该为这个概念寻找什么样的财产?

(需要注意的是,我的目标弹窗的地址不一样,每次地址的一小部分是作为'info'传递的代码)

【问题讨论】:

  • 你为什么要隐藏#canvas?如果它被隐藏,他们将无法再次点击它!?
  • 它是画布上的画布。哈哈。所以原始的底层图像仍然存在。梦中梦。废话

标签: javascript popup


【解决方案1】:

您不想每次点击#canvas 时都关闭旧窗口吗?

//earlier:
var winPop = false;
// in the click event:

if (winPop) {
    winPop.close();
}
winPop = window.open('About.aspx?info=' + info, "pop", 
    "resizable,width=1000,height=600,");

稍后关闭它:

window.onbeforeunload = function(e) {
    if (winPop) {
        winPop.close();
    }
};

【讨论】:

  • 理论上我在考虑这种方法,但是 winPop 是在 check 语句之后定义的。所以 winPop 最初是未定义的。将其初始化为空值是否安全?
  • 它不需要初始化 - 这是 JavaScript ;)。如果不存在,则winPop为'undefined',相当于if语句中的'false'。
  • 你是在一个古老的 IE 中运行它吗?无论如何,在活动之外(全球)你可以添加'var winPop = false;'。请注意,我没有在代码中使用 'var',因此 winPop 是全局的并且可用于 onbeforeunload 事件。
  • 是的,我最终为它分配了 var winPop = false..哈哈,我使用的是 IE 9。
  • 是的,对不起,我总是声明我的变量,但在我的示例代码中忽略了。
【解决方案2】:

好的,我知道您要求不同的答案,但也许这可以作为解决您问题的第二种方法,并尽量避免“来自浏览器的弹出窗口阻止程序”并让用户感到困惑。我的两分钱

是使用 iframe 弹出模式的基本示例。 http://jsfiddle.net/G8Cnh/

HTML

<div class="popup" style='display:none'>
    <i>X</i>
    <iframe style="width:100%; height:100%;" border="0" src="http://jsfiddle.net/"></iframe>
</div>
<a href="javascript:void(0)">open</a>

JS

$(document).on("click","a",function(){
 $(".popup").fadeToggle();
});

$(document).on("click","i",function(){
 $(".popup").fadeOut();
});

CSS

.popup{
    width:470px;
    top:50%;
    margin-top:-225px;    
    left:50%;
    margin-left:-225px;
    height:54%;
    background:#F60;    
    position:absolute;
    z-index:100;
    opacity:.8;
    padding:10px;    
}

.popup i{
    position:absolute;
    display:block;
    background:#FFF;
    border:1px solid #CCC;
    padding:5px;
    font-family:verdana;
    font-size:10px;
    left:100%;
    width:15px;
    hegith:15px;
    border-radius:50%;
    margin-left:-50px;
    text-align:center;
}

.popup i:hover{
    background:#F60;
    color:#FFF;
    cursor:pointer;
}

【讨论】:

  • 如果你想要更专业的方法,你可以使用jacklmoore.com/colorboxbest
  • 刚刚实现了您建议的方法:- jsfiddle.net/My9NZ/2 功能有效,但是 css 样式不适用于 X 元素。有什么建议吗?
  • 您需要在服务器上运行 X,还是只隐藏弹出窗口?
  • 我希望它只在侧面板上运行...又名“弹出”。这是我关闭侧面板/弹出元素。关闭它的功能.. 使用切换(),但是 css 样式,例如 i hover{} 不起作用。这不是必需品,但工作很酷。
  • 解决了,我只需要在 X 周围使用一个 div 类。但是如果我想使用 div 类名“popup”来使用淡出效果呢?可以吗? $(document).on("click","popup",function(){ $(".popup").fadeOut(); });
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-16
相关资源
最近更新 更多