将页面发布到iframe中导致弹出窗口拦截程序阻止发布操作。

3

我正在尝试通过一个带有POST变量的页面在Iframe中加载页面。没有明确打开新窗口的内容,但是我在FF和Chrome中收到了弹出式阻止通知。IE目前还没有阻止POST,但将来可能会。下面列出了触发弹出窗口的代码。

gamePage.name = 'game_page';
setTimeout('', 100);
gamePage.onload = setTimeout("$.download(getCompletePath() +'account/SomeFile.php',  gameId='+game_Id+'&playMode=J', 'post', 'game_page')", 0);

这里是$.download函数:

jQuery.download = function(url, data, method, target){
    //url and data options required
    if( url && data ){ 
        //data can be string of parameters or array/object
        data = typeof data == 'string' ? data : jQuery.param(data);
        //split params into form inputs
        var inputs = '';
        jQuery.each(data.split('&'), function(){ 
            var pair = this.split('=');
            inputs+='<input type="hidden" name="'+ pair[0] +'" value="'+ pair[1] +'" />'; 
        });
        //send request
        jQuery('<form action="'+ url +'" method="'+ (method||'post') +'" target="' + target +'">'+inputs+'</form>')
        .appendTo('body').submit().remove();
    };
};

目前我们的操作是通过GET方式执行的,但是我们正在尽可能将大多数GET请求切换为POST。如果可能的话,请帮忙解决在POST到iframe时如何绕过弹出窗口拦截器的问题,感激不尽。


我正在做同样的事情,但是Chrome正常工作;IE和Firefox出现了弹出窗口拦截器错误。 - jenjenut233
1个回答

0

使用简单的DIV而不是iFrame。

调用jQuery.post()方法,并使用jQuery.html(/response/)函数将响应作为您的div的innerHTML。

类似于这样:

$.post("urlToLoad.ext", { name: "John", time: "2pm" })
.success(function(data) {
    $('#yourDivID').html(data);
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接