javascript – 在用户点击时启动合法的弹出窗口

我知道有很多关于如何打败弹出窗口拦截器的线索.在这种情况下,我并不是真的想要这样做.默认情况下,浏览器不会阻止弹出窗口.允许使用合法的用户,例如用户点击它时.这是一个很好的测试:http://www.popuptest.com/goodpopups.html(适用于IE,Firefox,Chrome,Opera)

上述测试站点如何允许合法的弹出窗口是通过将onclick事件直接耦合到新窗口的启动.

就我而言,我不能只启动弹出窗口.我需要检查用户的输入(字母数字密码)是否有效.我是如何做的是通过ajax检查输入,如果它是有效的,将调用window.open()来启动窗口.唉,所有弹出窗口拦截器阻止了这一点.

还有其他方法可以做到这一点吗?如果输入无效,我不想启动窗口.如果输入无效,则错误消息将显示在直接页面上,而不会显示在新的弹出窗口中.启动一个窗口只是为了告诉用户它是无效的,这很愚蠢.

有什么想法或建议我如何检查输入,还允许显示合法的弹出窗口?

谢谢.

编辑包括我的(简化)代码

HTML表单:

<form id="form-passcode">
<input id="input-passcode" type="text" name="input-passcode" /><a class="submit" onclick="javascript:passcode_check(); return false;" href="javascript:">Go</a>
</form>

Javascript(使用jQuery):

function passcode_check() {
    var refPasscode = $('#input-passcode');
    var data = $('#form-passcode').serialize();
    $.ajax({
      url: check_passcode.php',
      data: data,
      dataType: 'json',
      type: 'post',
      success: function (j) {
        if (j.status == 1) {
          newwindow = window.open('http://google.com','Google','menubar=no,height=500,width=300,resizable=no,toolbar=no,location=no,status=no');
          if (window.focus) {newwindow.focus()}
        }
        else {
          // show error to end-user
        }
      }
    });
}

}

我还尝试了一种不太理想的替代方案,在通过ajax检查输入是否有效时,我会插入一个链接,例如< a href =“http://google.com”onclick =“newwin(this.href); return false”onfocus =“this.blur()”> Launch< / a>通过$(‘#form-passcode’).html();用户随后将点击此按钮以启动弹出窗口.这适用于所有浏览器,但我仍然希望让用户更加无缝.

再次感谢, :)

解决方法:

为什么不将验证码移动到onclick事件中?

例:
的onclick = “JavaScript的:validateInput();”

然后,在validateInput()中,如果密码有效,则打开新窗口.

另外,请确保您没有使用jQuery动态分配onclick处理程序.它应该静态指定为HTML属性.

上一篇:javascript – 显示模态弹出基础:防止关闭弹出窗口


下一篇:javascript – 立即在Chrome中打开多个链接作为新标签