【问题标题】:Window.Open without popup-blockerWindow.Open 没有弹出窗口阻止程序
【发布时间】:2012-09-27 21:36:48
【问题描述】:

我想在用户离开选项卡或关闭浏览器时打开一个弹出窗口,我的可用选项是 window.open,但是,它要求弹出窗口阻止程序,如果未启用,我尝试了所有可能的方法忽略弹出窗口阻止程序但徒劳无功,我尝试了onunload,onbeforeunload,但它不起作用,我还尝试使用模式对话框,在选项卡/浏览器之前,我在onbeforeunload事件中使用它,但它显示浏览器警报消息,它我不想要,我的简单要求是,我需要一个弹出窗口(如果可能的话)或模式对话框,在选项卡/浏览器关闭时,但应该忽略弹出阻止程序,我猜是模式对话框,我不需要担心弹出窗口阻止程序,因为那不会是新窗口,而是当用户关闭选项卡/浏览器时我将如何处理它。如果上述任何选项都不可行,谁能帮助我提供任何其他可能的替代方案或有用的文章。

Edited Question
我使用了下面的脚本,我可以在点击链接时打开一个新的弹出窗口,而不会干扰弹出窗口

$('a[href=http://www.google.com]').click(function(){
    window.open(this.href);
    return false;
  });

那么为什么它不可能为闭幕事件。

【问题讨论】:

标签: asp.net jquery popup-blocker


【解决方案1】:

您不能 - 因为弹出窗口阻止程序就是这样做的:它们会阻止弹出窗口(即调用 window.open 或调用 target="_blank" 链接),除非它直接响应用户鼠标操作。

在浏览器窗口关闭时打开弹出窗口是 2000 年代早期“pop-under”广告的常见策略,它激怒了用户,这就是为什么 Firefox 和 IE6 的弹出窗口阻止程序会阻止它们,并且无法绕过它除非您要求用户在您的网站上禁用他们的弹出窗口阻止程序(我想您会发现他们中的大多数人都不知道如何做到这一点)。

你到底想完成什么?您希望用户看到的弹出窗口的内容是什么?您还尝试了哪些其他方法?

【讨论】:

  • 实际上我想展示一个广告,当用户离开网站时,我使用了 onunload(用于弹出)和 onbeforeunload(用于模式对话框)事件,但会显示浏览器警报“你确定想要要离开这个网站,我可以用模态对话框解决吗,你有什么想法吗?
  • 你想做的事是不可能的。用户不想要广告,浏览器会屏蔽它们——没有办法。
【解决方案2】:

与您的 previous question.... 完全相同。

不过,我也会在这里发布我的答案......

弹出窗口拦截器旨在防止这种行为。

我建议使用模态窗口而不是实际的浏览器窗口。我不认为这些被阻止是因为它们是在页面本身中打开的。

至于事件...你可以做类似...

window.onbeforeunload = function whatever() {
       //Do code here for your modal to show up.
 }

如果您只是想发出警告或您可以做的事情

window.onbeforeunload = function showWarning() {
       returnString = 'Whatever you want your message to be....';
       return returnString;
 }

通过在 onbeforeunload 语句中返回某些内容,它将显示一个确认框,其中包含您的消息。

【讨论】:

  • 我试过onbeforeunload,我写了$("dialog").Show();在里面,但是从来没有出现过,直接关闭窗口
  • 我经常在我的一个应用程序中使用 onbeforeunload。您的页面上是否有其他代码干扰它?你是想打开一个模式窗口还是只显示一个警报/确认窗口?
  • 警报和确认框工作,但模式对话框卡住,你能给我工作应用程序的任何参考
  • 不幸的是我不知道你是否可以做一个模态。我从来没有在这种情况下使用过。这是similar SO questionMSDN article on onbeforeunload 的链接。我将尝试一个简单的示例,看看它是否适用于打开模式。
  • 我能够打开一个模式窗口。我使用 Telerik 的 Rad 控件,所以我不知道是不是因为它们。 radopen(null, null); 能够打开一个启用了弹出窗口阻止程序的空白模式,但它仅在我也有返回值时才打开,这将显示确认框。我相信这是设计使然。所以我不知道是否有办法在没有确认或警告框的情况下完成你想要做的事情。
【解决方案3】:

如果打开弹出窗口的 javascript 代码是在用户的直接操作(如单击、按键、拖动等)上执行的,则弹出窗口阻止程序不会阻止弹出窗口的打开。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-28
    • 1970-01-01
    • 2012-03-19
    • 1970-01-01
    • 1970-01-01
    • 2015-05-05
    • 2014-03-14
    • 1970-01-01
    相关资源
    最近更新 更多