3

我正在尝试从帖子中加载一个页面以将其加载到 Iframe 中,其中 POST 变量与将要加载的页面一起发送。没有明确打开新窗口的内容,但我在 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。在发布到 iframe 时如何绕过弹出窗口阻止程序的任何帮助将不胜感激。

4

1 回答 1

0

而不是 iFrame,只使用一个简单的 DIV。

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

像这样的东西:

$.post("urlToLoad.ext", { name: "John", time: "2pm" })
.success(function(data) {
    $('#yourDivID').html(data);
});
于 2013-08-18T09:30:53.140 回答