弹出窗口绕过弹出窗口阻止程序

时间:2014-02-27 07:04:59

标签: javascript jquery

是否可以在没有用户操作的情况下打开弹出窗口,至少弹出一个空白弹出窗口而不被弹出窗口阻止程序阻止?

我的目标是打开一个弹出窗口,确认用户是否在一段时间后才在PC上。例如,用户访问了我的网站并将其保留在浏览器中。说1小时之后我想显示弹出窗口,它只会询问用户是否在那里,如果用户不在他们的电脑上,我想将用户重定向到我网站的不同页面。

关于我如何做到这一点的任何线索?

已经通过了this stackoverflow post但没有帮助

道歉错过了重要的问题部分,我很喜欢时间部分,但我需要绕过弹出窗口阻止程序

我们可以手动覆盖弹出窗口阻止程序吗?

8 个答案:

答案 0 :(得分:0)

您可以使用javascript执行此操作,例如 bootstrap 框架。

// time argument shows after how much time we must show popup
var set = function(time){
  setTimeout(function(){
    // logic of open popup
  });
}

set(10000); //10 seconds

要了解如何使用引导程序模式(弹出窗口),您必须阅读this

答案 1 :(得分:0)

尝试使用timer

setTimeout('window.open(url")', miliseconds);

答案 2 :(得分:0)

弹出窗口阻止程序将阻止在没有用户操作的情况下触发的弹出窗口。在你的情况下解决一些js模态弹出窗口的解决方案。

您可以使用https://jqueryui.com/dialog/

或者一个简单的确认框也可以满足您的目的:

var response = confirm("are you there")?

但您无法根据网站主题自定义确认框。

答案 3 :(得分:0)

使用setTimeout函数read

setTimeout(函数名称,延迟时间) - 函数将在指定的延迟后执行

答案 4 :(得分:0)

你可以使用它,但它不是正确的解决方案,但它正在工作

  var timeoutTime = 1800000;
        var timeoutTimer =   setTimeout(function(){
            alert("TimeOut");
          }, timeoutTime);
        $(document).ready(function() {
            $('body').bind('mousedown keydown', function(event) {
                clearTimeout(timeoutTimer);
                timeoutTimer = setTimeout(function(){
            alert("TimeOut");
          }, timeoutTime);
            });
        });

答案 5 :(得分:0)

如果您想要一个完整的窗口弹出窗口,除非用户已禁用您网站的弹出窗口拦截器,否则您无法执行此操作。但是,如果模态对话框对您有用,而您只是知道用户是否仍在查看您的页面,那么您可以使用以下内容:

setTimeout(function() {
    var timeout = setTimeout(function() {
        //logic to redirect if the user hasn't responded to dialog yet.
    }, 60000); //waits 1 minute for response, change as needed
    $('#dialog-element').on('dialogclose', function() {
        clearTimeout(timeout);
        $('#dialog-element').off('dialogclose');
    });
}, 3600000); //one hour wait

这假设您正在使用jQuery UI,并将$('#dialog-element')设置为模式对话框(请参阅http://jqueryui.com/dialog/)。

答案 6 :(得分:0)

您可以创建时间计数器并使用jQuery来检测mousemovekeypress事件。经过一段时间后,会弹出一个对话框,您可以根据需要为其添加更多重定向逻辑:

<强> Demo Fiddle

出于测试目的,将增量设置为1000(1秒)而不是60000,时间检查器设置为超过2秒:

var idleInterval = setInterval(timerIncrement, 1000); // 1 second
....
function timerIncrement() {
    idleTime = idleTime + 1;
    if (idleTime > 2) { // 2 seconds

参考:

Detect idle time in JS

jQuery UI Dialog

答案 7 :(得分:0)

好吧,你可以尝试这段代码!

var timeoutTime = 1800000;
        var timeoutTimer =   setTimeout(function(){
            alert("TimeOut");
          }, timeoutTime);
        $(document).ready(function() {
            $('body').bind('mousedown keydown', function(event) {
                clearTimeout(timeoutTimer);
                timeoutTimer = setTimeout(function(){
            alert("TimeOut");
          }, timeoutTime);
            });
        });