【问题标题】:Can i Call Window.open from confirm dialog Box?我可以从确认对话框调用 Window.open 吗?
【发布时间】:2014-05-07 14:03:09
【问题描述】:

我可以使用javascript从确认对话框调用window.open吗?

我的要求: 如果启用了浏览器弹出窗口阻止程序,我想使用window.open(); 打开弹出窗口,但它没有发生,所以我必须显示确认消息“浏览器弹出窗口阻止程序已启用,现在弹出窗口已打开”。现在我点击“确定”,那时我想调用 window.open() 函数。

<html>
    <body onload="openPopup();">
        <head>
            onload Popup Window
        </head>
    </body>

    <script>
        function openPopup () {
            var href= 'http://google.com';
            popUp = window.open(href, "_blank");
            if (popUp === null || typeof popUp === 'undefined') {
                var ret = confirm("this alert is displayed by Blocker, Continue to Open ?");
                if(ret){
                    window.open(href,"_new");
                }
            } else {
                popUp.focus();
            }
        }
    </script>

是否有可能或有其他方法来处理这种情况?

【问题讨论】:

  • @DontVoteMeDown 感谢您的编辑..
  • 你想在浏览器加载后立即打开窗口,可以显示提示和加载窗口,甚至加载不显示警报,你想要哪一个?
  • 如果第一个open()被浏览器屏蔽了,后面的open()也会被屏蔽。
  • @Hawk 我想在任何地方调用 window.open() 函数(没有点击函数)我应该打开弹出窗口。这意味着我必须打开浏览器显示弹出窗口的任何地方。
  • @DontVoteMeDown 是的,正确,但浏览器弹出窗口阻止程序仅在弹出窗口打开时显示,无需用户交互(无点击事件)。

标签: javascript


【解决方案1】:

没有。

弹出窗口通常只允许在用户点击后出现,正如您在代码中看到的那样,onload 通常不允许。

但是,您可以使用自己的 UI 创建自定义确认框,用户可以单击该确认框打开弹出窗口。这将起作用,除非浏览器的弹出窗口阻止程序过于热心,甚至可以阻止未经浏览器本身事先确认的点击打开弹出窗口。

【讨论】:

  • 好的,如果有任何其他方法可以使用 javascript / Jquery 禁用浏览器弹出窗口阻止程序。仅我的要求,在浏览器阻塞时打开弹出窗口。
  • 弹出窗口阻止程序的全部意义在于它阻止弹出窗口。如果有办法禁用它,那将完全违背目的。
  • 那是因为网站的横幅带有“点击这里”sh*t,他们只是无法在没有用户交互的情况下打开弹出窗口,而这 - 就像你说的 - 是主要的拦截器的目的。否则网页导航会像地狱一样。
  • @DontVoteMeDown 当然,人们可以彼此友好,并在他们的网站上提供愉快的浏览体验。有时我认为不应该有弹出窗口阻止程序。如果一个网站向你抛出弹出窗口,那么你就会停止访问它,它就会缓慢而可怕地死去。
  • ...是的。 jQuery是独角兽开发的一种神奇的编程语言。它使用 JavaScript 运行,但以某种方式完成了不可能的壮举。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-01
  • 2016-07-29
  • 2011-04-03
  • 1970-01-01
  • 2021-07-24
相关资源
最近更新 更多