我有一项以 pdf 格式生成自定义生日模板的服务。用户有积分,当他单击按钮时,会执行 ajax 调用以获取创建的 pdf 文件的编号,然后使用window.location将 pdf 显示给用户。
chrome 和 firefox 中的一切都很好,但 IE 会通过一个通用的栏弹出窗口阻止 pdf,该栏弹出询问用户的同意。当用户接受并单击“是”时,没有任何反应,用户需要再次单击该按钮才能使其生效,而在后端,用户的信用已被计算在内。
该网站的用户群主要是老年人,我不能让这种情况发生,因为根据谷歌分析,我 60% 的用户有 IE。
这是电话:
$.ajax({
type: "POST",
url: "getNum.php",
dataType: "html",
data: {data: $.toJSON(birthday)},
success: function(data){
if (parseInt(data) <= 0){
$('#waitModal').modal('hide');
if(parseInt(data) != -10){
$('#signInModal').modal('show');
} else{
//no credit
}
}else{
window.location = "generateBirthdayCard.php?num="+parseInt(data)
}
}
这是显示 pdf 的脚本 (generateBirthdayCard.php):
if (!$_GET['num']) die("looking for ?url=http://www.....");
$num = trim(escapeshellarg($_GET['num']), "'");
//only if the requested refrence is an integer
if (is_numeric($num)){
$str = file_get_contents("/tmp/$num.pdf");
header('Content-Type: application/pdf');
header('Content-Length: '.strlen($str));
header('Content-Disposition: inline; filename="custom-birthday-cards.pdf"');
header('Cache-Control: private, max-age=0, must-revalidate');
header('Pragma: public');
ini_set('zlib.output_compression','0');
die($str);
}
编辑:当使用 IE8 的开发工具模拟 IE7 时,这发生在 IE8 和 IE7 中