_blank被阻止弹出我怎么能阻止这个?

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取代,这不是我想要的结果.

Que*_*tin 5

浏览器在允许JavaScript 显示弹出窗口时有严格的规则,但它们可以概括为"仅响应用户操作".

接收对HTTP请求的响应不是用户操作,因此禁止弹出窗口.

这里的简单解决方案是不使用JavaScript.Ajax的意思是在不离开页面的情况下与服务器通信,但是你仍然要离开页面,所以使用Ajax没有任何意义.

只需使用常规表单提交.

<form method="post" action="createpdf/" target="_blank">
Run Code Online (Sandbox Code Playgroud)

...然后让服务器端脚本重定向到创建的PDF的URL,而不是将URL作为JSON返回.