我有这个简单的javascript函数:
<script type="text/javascript">
$(document).ready(function () {
$(document).on('click', '.check', function(){
$.post('/index.php',
{
article: '1'
},
function(data, textStatus)
{
window.open('https://google.com');
});
});
});
</script>
<button class=".check">Check</buttton>
虽然点击是用户启动的,但浏览器会阻止弹出窗口。怎么避免这个?
答案 0 :(得分:2)
没有办法通过代码取消阻止它。
大多数浏览器认为弹出窗口非常中断,这就是他们阻止弹出窗口的原因。
您只能查看弹出窗口是否被阻止,并立即通知用户取消阻止。
var wind = window.open('https://google.com');
if(!wind || wind.closed || typeof wind.closed=='undefined')
{
//POPUP BLOCKED
alert("please enable popups");
}
答案 1 :(得分:0)
您的弹出窗口应由用户互动直接触发。但它取而代之的是AJAX回调。
因此,为防止阻止,您应该在click
处理程序中打开弹出窗口。然后发帖..
编辑:一个棘手的方法是直接打开弹出窗口,然后发出请求,最后将弹出窗口重定向到结果网址:
$(document).on('click', '.check', function(){
var popup = window.open('/loading.html', 'popup');
$.post('/index.php', { article: '1' },
function (data, textStatus) {
popup.location.href = 'http://new-url';
});
});
答案 2 :(得分:0)
你可以尝试这个技巧:
function(data, textStatus)
{
var anchor = $( '<a/>', {href:'https://google.com',target:'_blank'} ).text( 'TEST' );
$('body').append( anchor );
$('body').find( 'a' ).last()[0].click();
anchor.remove();
};