防止浏览器弹出窗口警告
Prevent window popup warning in browser
我试图在一个新窗口中打开一个jsp页面。使用javascript window.open
会产生浏览器警告,在某些情况下(firefox)默认会阻止弹出窗口。有什么办法解决这个问题(这不是一个恶意应用程序-它是一个内部用户工具)?
大多数浏览器不会阻止由用户操作触发的弹出窗口,例如单击按钮。例如,如果你的window.open
javascript附加到一个按钮的onclick
事件,浏览器将不会阻止它。
我将在这里分享我的解决方案,因为我看到没有提供。
重要的是
当弹出窗口打开时,每个浏览器都有一个可接受的时间限制,超过这个时间限制,它会删除"信任",假设现在它在用户操作之外并阻止弹出窗口。此时间限制因浏览器而异,例如chrome为3秒,而firefox为2秒。
如何阻止浏览器阻止弹出窗口
首先,您需要确保在某些用户操作时打开一个ONLY弹出窗口。
然而,这并不总是可能的。例如,每次用户点击"打印发票"时,我都需要打开一个弹出窗口来加载pdf格式的发票。当用户点击按钮时,我没有pdf,我需要做以下操作:
- 发出ajax请求
- 在服务器上生成pdf
- 发送回一个公共可访问路径,我将把它加载到弹出窗口中以在浏览器中显示pdf
现在,上述过程总是根据pdf的复杂程度和客户端互联网的速度而变化。
我遇到了这个问题,浏览器阻止了我的弹出窗口。
所以一个简单的解决方案是:
- 当用户点击按钮时立即打开一个弹出窗口
- 将焦点切换到弹出窗口
- 然后发出ajax请求,并从服务器获得加载路径或任何你需要的东西。
- 在弹出窗口中加载url,或者根据服务器的响应进行修改。
let newWindow = open('/', 'example', 'width=300,height=300')
newWindow.focus();
let data = {
//whatever data you need to provide
};
//send ajax
$.ajax({
type: "POST",
url: yourUrl,
headers: {
//if you use XCSRF or add any other header you might have
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
data: data,
success: function( response ) {
//load the returned content in new window
//or whatever else you need to do
newWindow.location.href = response.path;
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
console.log(XMLHttpRequest, textStatus, errorThrown);
}
});
当然,你需要根据你的需要来调整它,但我希望它能帮助你朝着正确的方向前进。
我已经解决了我的问题基于有用的信息弹出提供这里
希望对大家有所帮助
相关文章:
- 我如何生成一个警告/弹出窗口,说明在用户点击之前避免点击浏览器的后退按钮
- 单击弹出窗口警告框时,父 Jsp 页面刷新
- 如何在Shiny中创建一个弹出窗口来警告用户选择一种类型的文件扩展名
- 在文本区域旁边显示一个对话框,不显示弹出窗口或警告框
- 如何在警告消息中单击“确定”后关闭浏览器中的当前窗口
- 禁止在窗口上显示警告消息.打开
- 关闭弹出窗口时显示警告信息
- 如何将表单提交操作从显示警告弹出窗口更改为重定向到新页面?
- 打开一个新的窗口,而浏览器没有给出警告,这是一个弹出
- 当显示javascript警告消息时,窗口背景变成灰色
- 警告中心元素窗口(jQuery)
- 更改窗口关闭时的警告对话框
- 无法在IE上获得警告弹出窗口.在Firefox,Chrome等中工作正常
- 警告用户如果窗口.宽度小于950px jQuery
- Javascript警告框隐藏在弹出窗口内
- 在新窗口中显示警告消息
- 在Java Script中关闭窗口前显示警告信息
- 在Java Script中关闭窗口前显示带有OK按钮的警告信息
- 如果在ajax调用期间显示警告窗口会发生什么
- 防止浏览器弹出窗口警告