我面临一个有趣的问题:
目前我有一个“打印”按钮,它位于一系列页面的末尾,用户可以在这些页面中输入信息,进行选择并获得独特的结果。
当他们按下此按钮时,表示应用程序状态的数据将通过JQuery的.post()
发送。一旦目标脚本处理该数据并将其作为唯一ID存储在数据库中,该ID就会被发送回成功处理程序。然后在成功处理程序中使用该ID打开一个新窗口,该窗口将下拉它们发送的数据并以可打印的方式显示它。
$.post("api/PrintJob.php", applicationStateJSON, function(response)
{
window.open("print/?job=" + response.token);
}, "json");
由于window.open()
调用不直接位于点击处理程序中,因此可以理解地阻止了。
我不能简单地使用window.location.href = ?;
,因为如果用户想要返回某个步骤并进行一些更改等,则需要维护应用程序的状态。
目前我唯一的解决方案是在成功处理程序中出现一个辅助按钮,并启动打印窗口。然而,我宁愿保留当前的感觉,并在新的标签/窗口/弹出/可能的情况下打开窗口,而不会被阻止。
也许有一种方法可以在我最初点击打印时启动弹出窗口,然后在数据到达数据库时重新加载它?
欢迎任何想法。
答案 0 :(得分: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");
答案 1 :(得分:1)
我的建议是在第一次点击时打开一个窗口,然后从新打开的窗口发帖。在新打开的窗口中收到帖子的回复。此响应可用于使用JS / JQuery绘制新窗口。