Gre*_*reg 4 html javascript html5 popup
我使用时在服务器上创建了一个pdf:
function GetPdf(document) {
//Stores the data and creates the html,pdf file
$http.post('createpdf/', document).success(function(data){
console.log(data.filename);
window.open('download2/'+data.filename+".pdf", "_self");
});
Run Code Online (Sandbox Code Playgroud)
我在谷歌浏览器中弹出了阻止弹出的错误消息.当我使用该网站的选项启用弹出窗口时,一切正常.有没有办法解决 ?因为这可能会让一些用户感到困惑.
但是当我使用时:
window.open('download2/'+data.filename+".pdf", "_self");
Run Code Online (Sandbox Code Playgroud)
它打开页面没有警告,但然后主应用程序被pdf取代,这不是我想要的结果.
浏览器在允许JavaScript 显示弹出窗口时有严格的规则,但它们可以概括为"仅响应用户操作".
接收对HTTP请求的响应不是用户操作,因此禁止弹出窗口.
这里的简单解决方案是不使用JavaScript.Ajax的意思是在不离开页面的情况下与服务器通信,但是你仍然要离开页面,所以使用Ajax没有任何意义.
只需使用常规表单提交.
<form method="post" action="createpdf/" target="_blank">
Run Code Online (Sandbox Code Playgroud)
...然后让服务器端脚本重定向到创建的PDF的URL,而不是将URL作为JSON返回.