0

我面临一个有趣的问题:

目前我有一个按钮,上面写着“打印”,它位于一系列页面的末尾,用户可以在其中输入信息、进行选择并获得独特的结果。

当他们按下此按钮时,表示应用程序状态的数据将通过 JQuery 的.post(). 一旦目标脚本处理该数据并根据唯一 ID 将其存储在数据库中,该 ID 就会被发送回成功处理程序。然后在成功处理程序中使用该 ID 来打开一个新窗口,该窗口将下拉他们发送的数据并以可打印的方式显示它。

$.post("api/PrintJob.php", applicationStateJSON, function(response)
{
    window.open("print/?job=" + response.token);

}, "json");

因为window.open()调用不是直接在点击处理程序中,所以弹出窗口被阻塞是可以理解的

我不能简单地使用window.location.href = ?;,因为需要维护应用程序的状态,以防用户想要后退一步并进行一些更改等。

目前我唯一的解决方案是在成功处理程序中显示一个辅助按钮,然后启动打印窗口。但是,我更愿意保留当前的感觉并在新选项卡/窗口/弹出窗口/任何可能的情况下打开窗口,而不会被阻止。

也许有一种方法可以在我最初单击打印时将弹出窗口启动为空,然后在数据到达数据库时重新加载它?

欢迎任何想法。

4

2 回答 2

1

鉴于这种情况,一个选项可能是隐藏第二个按钮并在令牌返回后触发点击。

var token;

$('#hiddenbutton').click(function(){
     window.open("print/?job=" + token);
 }):

$.post("api/PrintJob.php", applicationStateJSON, function(response)
{
    token = response.token;
    $('#hiddenbutton').trigger('click');
}, "json");
于 2012-12-11T06:04:24.373 回答
1

我的建议是在第一次点击时打开一个窗口,然后从新打开的窗口发布一个帖子。在新打开的窗口中收到帖子的响应。此响应可用于使用 JS/JQuery 绘制新窗口。

于 2012-12-11T06:07:12.670 回答