_blank 在弹出窗口时被阻止,我该如何防止这种情况发生?
_blank got blocked as pop up how can i prevent this?
我使用时在服务器上创建了一个 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");
});
我在 google chrome 中收到一条错误消息弹出窗口。
当我使用该选项为该网站启用弹出窗口时,一切正常。有没有办法解决 ?因为这可能会让某些用户感到困惑。
但是当我使用:
window.open('download2/'+data.filename+".pdf", "_self");
打开页面时没有警告,但主应用程序被 pdf 替换,这不是我想要的结果。
我猜你正在使用外部 JavaScript 库,我在另一个项目上遇到了同样的问题,我使用了 target="_tab"
并且它有效,我在 this question. 上找到了这个
这是 Chrome 在您使用库时处理来自 JavaScript 的弹出调用的方式,我使用 Moment.js 触发了类似的事件并遇到了同样的问题。
弹出窗口阻止不是问题,而是保护用户免受 popup-hell 侵害的本机浏览器功能。
我建议在 modal popup 而不是新浏览器 window.
中打开 PDF
使用一些 jQuery 代码很容易实现:找到文档 here
您始终可以使用替代路线,例如代替 window.open 功能。也许您可以使用 window.location 函数。 Windows.location.replace 这会将您重新定位到同一个选项卡中。
<script type="text/javascript">
<!--loc can be any changed to your window-->
var loc = "https://google.com/";
window.
window.onclick = function() {
window.open(loc);
}
</script>
试试看:)
window.open 被屏蔽了,因为您 window.open 没有点击功能。出于安全目的,大多数网络浏览器会阻止此功能。
浏览器对于何时允许 JavaScript 到 show a popup 有严格的规定,但可以概括为 "Only in response to a user action".
接收对 HTTP 请求的响应不是用户操作,因此禁止弹出窗口。
此处的简单解决方案是不使用JavaScript。 Ajax 的目的是在不离开页面的情况下与服务器通信,但无论如何你都会离开页面,所以使用 Ajax.
没有任何意义
只需使用常规表单提交即可。
<form method="post" action="createpdf/" target="_blank">
… 然后让服务器端脚本重定向到创建的 PDF 的 URL,而不是将 URL 作为 JSON.
返回
我使用时在服务器上创建了一个 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");
});
我在 google chrome 中收到一条错误消息弹出窗口。 当我使用该选项为该网站启用弹出窗口时,一切正常。有没有办法解决 ?因为这可能会让某些用户感到困惑。
但是当我使用:
window.open('download2/'+data.filename+".pdf", "_self");
打开页面时没有警告,但主应用程序被 pdf 替换,这不是我想要的结果。
我猜你正在使用外部 JavaScript 库,我在另一个项目上遇到了同样的问题,我使用了 target="_tab"
并且它有效,我在 this question. 上找到了这个
这是 Chrome 在您使用库时处理来自 JavaScript 的弹出调用的方式,我使用 Moment.js 触发了类似的事件并遇到了同样的问题。
弹出窗口阻止不是问题,而是保护用户免受 popup-hell 侵害的本机浏览器功能。 我建议在 modal popup 而不是新浏览器 window.
中打开 PDF使用一些 jQuery 代码很容易实现:找到文档 here
您始终可以使用替代路线,例如代替 window.open 功能。也许您可以使用 window.location 函数。 Windows.location.replace 这会将您重新定位到同一个选项卡中。
<script type="text/javascript">
<!--loc can be any changed to your window-->
var loc = "https://google.com/";
window.
window.onclick = function() {
window.open(loc);
}
</script>
试试看:) window.open 被屏蔽了,因为您 window.open 没有点击功能。出于安全目的,大多数网络浏览器会阻止此功能。
浏览器对于何时允许 JavaScript 到 show a popup 有严格的规定,但可以概括为 "Only in response to a user action".
接收对 HTTP 请求的响应不是用户操作,因此禁止弹出窗口。
此处的简单解决方案是不使用JavaScript。 Ajax 的目的是在不离开页面的情况下与服务器通信,但无论如何你都会离开页面,所以使用 Ajax.
没有任何意义只需使用常规表单提交即可。
<form method="post" action="createpdf/" target="_blank">
… 然后让服务器端脚本重定向到创建的 PDF 的 URL,而不是将 URL 作为 JSON.
返回